java如何读取某个文件夹中的全部文件(包括子文件夹)

java读取某个文件夹中的全部文件

主要思路

使用file.listFiles()函数可以获取到某文件夹下的所有文件信息,如果需要访问子文件夹下的文件,则需要对获取到的文件信息进行递归遍历,如果是目录则继续统计,如果是文件则加入文件列表中

示例

例如我想读取该java项目中所有的文件(包括子文件夹中的文件)

java如何读取某个文件夹中的全部文件(包括子文件夹)_第1张图片

则将第十一行的basePath修改为该文件夹所在路径,运行结果如下图所示

java如何读取某个文件夹中的全部文件(包括子文件夹)_第2张图片

代码

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 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 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 GetFiles(String path, String searchPattern, ArrayList 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;
    }

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

你可能感兴趣的:(java如何读取某个文件夹中的全部文件(包括子文件夹))