java获取文件夹中所有文件
前言
文章记录了java获取指定文件夹所有文件的方法,其中用到的工具类StringUtils 源自org.apache.commons.lang,其maven引用如下:
<!-- long3 --> <dependency> <groupId>org.apache.commons</groupId> <artifactId>commons-lang3</artifactId> <version>3.12.0</version> </dependency>
一、不包含文件夹
/** * <h1>获取指定文件夹下所有文件,不含文件夹</h1> * @param dirFilePath 文件夹路径 * @return */ public static List<File> getAllFile(String dirFilePath){ if(StringUtils.isBlank(dirFilePath)) return null; return getAllFile(new File(dirFilePath)); } /** * <h1>获取指定文件夹下所有文件,不含文件夹</h1> * @param dirFile 文件夹 * @return */ public static 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; }
二、包含文件夹
一中的代码是不包含文件夹的,若要包含文件夹,很容易修改一得到。
/** * <h1>获取指定文件夹下所有文件,含文件夹</h1> * @param dirFilePath 文件夹路径 * @return */ public static List<File> getAllFile(String dirFilePath){ if(StringUtils.isBlank(dirFilePath)) return null; return getAllFile(new File(dirFilePath)); } /** * <h1>获取指定文件夹下所有文件,不含文件夹</h1> * @param dirFile 文件夹 * @return */ public static 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 { // 如果是文件夹。则先将其添加到结果集合,再将其内部文件添加进结果集合。 files.addAll(childFile); List<File> cFiles = getAllFile(childFile); if(Objects.isNull(cFiles) || cFiles.isEmpty()) continue; files.addAll(cFiles); } } return files; }
总结
本文介绍了java获取文件夹中所有文件,记录了不包含文件夹和包含文件夹两需求的方法。其中大部分代码相同,如若采用,请根据需要自行重构。上一篇:
Python 安装包管理工具 pip