递归遍历文件目录寻找文件

来源:互联网 发布:北京城市规划 知乎 编辑:程序博客网 时间:2024/05/15 18:42


方法一:只查找一个文件

//此方法是当文件目录下没有重名文件时使用,当有重名时,找第一个文件(最前面的文件夹的最外面那一层的文件)

//file:传入一个文件对象(要查寻的文件目录),fileName是要查找的文件名

private File findFile(File file, String fileName) {
        File returnFile = null;
        List<File> files = new ArrayList<>();
        for (File subfile : file.listFiles()) {
            if (subfile.isDirectory()) {
                files.add(subfile);
            } else {
                if (subfile.getName().equals(fileName)) {
                    return subfile;
                }
            }
        }
        if (!files.isEmpty()) {
            for (File file2 : files) {
                returnFile = findFile(file2, fileName);
                if (returnFile != null)
                    break;
            }
        }
        return returnFile;

    }

方法二:查询多个文件

//当目录下有多个重名文件时使用

//通过文件名查询文件

public List<File> findFile(File file, String fileName) {
        ArrayList<File> arrayList = new ArrayList<>();
        File returnFile = null;
        ArrayList<File> list = new ArrayList<>();
        File[] listFiles = file.listFiles();
        for (File subFile : listFiles) {
            if (subFile.isDirectory()) {
                list.add(subFile);
            } else {
                if (fileName.equals(subFile.getName())) {
                    arrayList.add(subFile);
                }
            }
        }
        if (!list.isEmpty()) {
            for (File file2 : list) {
                List<File> findFile = findFile(file2, fileName);
                arrayList.addAll(findFile);
            }
        }
        return arrayList;
    }


原创粉丝点击