java 获取文件夹下所有文件


以下两个函数实现获取文件夹下所有文件
/**
     * 获取指定文件夹下所有文件,不含文件夹里的文件
     *
     * @param dirFilePath 文件夹路径
     * @return
     */
    public List<File> getAllFile(String dirFilePath) {
        if (StrUtil.isBlank(dirFilePath))
            return null;
        return getAllFile(new File(dirFilePath));
    }


    /**
     * 获取指定文件夹下所有文件,不含文件夹里的文件
     *
     * @param dirFile 文件夹
     * @return
     */
    public List<File> getAllFile(File dirFile) {
        // 如果文件夹不存在或着不是文件夹,则返回 null
        if (Objects.isNull(dirFile) || !dirFile.exists() || dirFile.isFile())
            return null;

        File[] childrenFiles = dirFile.listFiles();
        if (Objects.isNull(childrenFiles) || childrenFiles.length == 0)
            return null;

        List<File> files = new ArrayList<>();
        for (File childFile : childrenFiles) {
            // 如果是文件,直接添加到结果集合
            if (childFile.isFile()) {
                files.add(childFile);
            }
            //以下几行代码取消注释后可以将所有子文件夹里的文件也获取到列表里
//            else {
//                // 如果是文件夹,则将其内部文件添加进结果集合
//                List<File> cFiles = getAllFile(childFile);
//                if (Objects.isNull(cFiles) || cFiles.isEmpty()) continue;
//                files.addAll(cFiles);
//            }
        }
        return files;
    }

若子文件夹内的文件也要获取,可以将最后一个else那几行代码取消注释


下面介绍用法

在具体应用时只需要用到第一个函数,参数为文件夹的目录
在D盘下创建一个文件夹,命名为aaa
所创建的文件夹如下图所示


测试代码

@Test
void testGetAllFiles(){
    List<File> allFile = getAllFile("D:\\aaa");
    System.out.println(allFile);
    for (File file :allFile) {
        System.out.println(file);
    }
}
























































































































0 0
讨论应以学习和精进为目的。请勿发布不友善或者负能量的内容,与人为善,比聪明更重要!
帮助