废话不多话直接上代码:
package com.laozeng.importTest;
import java.io.File;
import java.util.ArrayList;
import java.util.List;
import java.util.function.BiConsumer;
import java.util.stream.Stream;
public class FileUtils {
private static List<File> FILES = new ArrayList<>();
public static List<File> getFiles(String path, String[] exts){
File file = new File(path);
if(file.isDirectory()){
// 如果是目录
File[] listFiles = file.listFiles();
if(listFiles != null){
for (File listFile : listFiles) {
// 循环目录下面的文件,再次做出判断:如果是目录递归查询,如果是文件直接添加到集合
if(listFile.isDirectory()){
getFiles(listFile.getPath(), exts);
}else{
myConsumer.accept(exts, listFile);
}
}
}
}else{
// 如果是文件
myConsumer.accept(exts, file);
}
return FILES;
}
private static BiConsumer<String[], File> myConsumer = (exts, file) -> {
if(exts != null && !Stream.of(exts).anyMatch(m -> m.equals(getFileExt(file)))){
return;
}
FILES.add(file);
};
private static String getFileExt(File file){
if(file == null || file.getName().indexOf(".") == -1){
return "";
}
String substring = file.getName().substring(file.getName().lastIndexOf("."));
return substring;
}
public static void main(String[] args) {
List<File> files = FileUtils.getFiles("D:\\study\\springboot-demo", new String[]{".java"});
for (File file : files) {
System.out.println(file.getName());
}
System.out.println(files.size());
}
}