62,612
社区成员
发帖
与我相关
我的任务
分享
/** 获取dir目录下的所有文件,并保存到files集合中 */
private static void getAllFile(File dir, List<File> files) {
File[] fileArr = dir.listFiles();
if (fileArr == null || fileArr.length == 0) return;
for (int i = 0; i < fileArr.length; i++) {
File file = fileArr[i];
if (file.isFile()) {
files.add(file);
} else {
getAllFile(file, files);
}
}
}
/** 对files集合中的文件进行分类,以文件的扩展名进行分类 */
private static Map<String, List<File>> getFileCategory(List<File> files) {
return files.stream().collect(Collectors.groupingBy(file -> {
String suffix;
String fileName = file.getName();
if (fileName.contains(".")) {
suffix = fileName.substring(fileName.lastIndexOf(".") + 1);
} else {
suffix = "";
}
return suffix;
}));
}
public static void main(String[] args) throws Exception {
File dir = new File("C:\\Users\\abczh\\Desktop");
List<File> files = new ArrayList<>();
// 拿到dir目录下所有的文件
getAllFile(dir, files);
// 按扩展名进行类型,key为扩展名,value为该扩展名对应的文件
Map<String, List<File>> fileCategoryMap = getFileCategory(files);
// 打印所有的扩展名
fileCategoryMap.keySet().forEach(System.out::println);
// 打印所有.txt的文件
fileCategoryMap.get("txt").forEach(System.out::println);
}
如果我的回答解决了你的问题,麻烦结一下帖子,给点积分,谢谢^_^