java如何讀取某個文件夾中的全部文件(包括子文件夾)

java讀取某個文件夾中的全部文件

主要思路

使用file.listFiles()函數可以獲取到某文件夾下的所有文件信息,如果需要訪問子文件夾下的文件,則需要對獲取到的文件信息進行遞歸遍歷,如果是目錄則繼續統計,如果是文件則加入文件列表中

示例

例如我想讀取該java項目中所有的文件(包括子文件夾中的文件)

image-

則將第十一行的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;
    }

以上為個人經驗,希望能給大傢一個參考,也希望大傢多多支持WalkonNet。

推薦閱讀: