首頁 > 軟體

java如何讀取某個資料夾中的全部檔案(包括子資料夾)

2022-12-05 14:01:07

java讀取某個資料夾中的全部檔案

主要思路

使用file.listFiles()函數可以獲取到某資料夾下的所有檔案資訊,如果需要存取子資料夾下的檔案,則需要對獲取到的檔案資訊進行遞迴遍歷,如果是目錄則繼續統計,如果是檔案則加入檔案列表中

範例

例如我想讀取該java專案中所有的檔案(包括子資料夾中的檔案)

則將第十一行的basePath修改為該資料夾所在路徑,執行結果如下圖所示

程式碼

package cn.edu.xjtu;

import java.io.File;
import java.util.ArrayList;
import java.util.List;

public class test {

    public static void main(String[] args) {

        String basePath = "D:\code\java\typoraImgTypeTrans";
        File dir = new File(basePath);

        List<File> allFileList = new ArrayList<>();

        // 判斷資料夾是否存在
        if (!dir.exists()) {
            System.out.println("目錄不存在");
            return;
        }

        getAllFile(dir, allFileList);

        for (File file : allFileList) {
            System.out.println(file.getName());
        }
        System.out.println("該資料夾下共有" + allFileList.size() + "個檔案");
    }

    public static void getAllFile(File fileInput, List<File> allFileList) {
        // 獲取檔案列表
        File[] fileList = fileInput.listFiles();
        assert fileList != null;
        for (File file : fileList) {
            if (file.isDirectory()) {
                // 遞迴處理資料夾
                // 如果不想統計子資料夾則可以將下一行註釋掉
                getAllFile(file, allFileList);
            } else {
                // 如果是檔案則將其加入到檔案陣列中
                allFileList.add(file);
            }
        }
    }
}

java獲取資料夾下指定的檔案

/*
    * 獲取指定的檔案
    * */
 private ArrayList<String> GetFiles(String path, String searchPattern, ArrayList<String> filesList) {
        if (filesList == null) {
            filesList = new ArrayList<>();
        }
        if (!Strings.isNullOrEmpty(path) && !Strings.isNullOrEmpty(searchPattern)) {
            try {
                File f = new File(path);
                if (f.exists()) {
                    final File[] files = f.listFiles();
                    for (File file : files) {
                        if (file.isDirectory()) {
                            GetFiles(file.getPath(), searchPattern, filesList);
                        } else if (file.isFile()) {
                            if (file.getName().endsWith(searchPattern)) {
                                filesList.add(file.getPath().toString());
                            }
                        }
                    }
                }
            } catch (Exception ex) {
                System.out.println(ex.getMessage());
            }
        }
        return filesList;
    }

以上為個人經驗,希望能給大家一個參考,也希望大家多多支援it145.com。


IT145.com E-mail:sddin#qq.com