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

 

方法一:只查找一个文件

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

//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;
    }


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值