前言
文章记录了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获取文件夹中所有文件,记录了不包含文件夹和包含文件夹两需求的方法。其中大部分代码相同,如若采用,请根据需要自行重构。
版权声明:本文为m0_47406832原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。