要求:
传入文件名(或者文件类型),和要查找的文件目录,使用递归遍历此文件目录下的所有文件,找到该文件对象并输出
如果没有找到则输出未找到
直接上代码
import java.io.File;
import java.util.ArrayList;
import java.util.List;
public class SearchFile {
public static List<File> searchResult = new ArrayList<>();//存储查询结果
public static void main(String[] args) {
//进行测试
searchFilesByname("D:\\JAVA\\FileTest","a.txt");
searchFilesByname("D:\\JAVA\\FileTest","txt");
searchFilesByname("D:\\JAVA\\FileTest","java");
searchFilesByname("D:\\JAVA\\FileTest","xt");
}
public static void searchFilesByname(String directoryPath,String searchFileName){
List<File> getResult = getFiles(new File(directoryPath),searchFileName);//获取查询结果
System.out.println("-----------------------搜索结果-----------------");
if(getResult.isEmpty()){
System.out.println(searchFileName+"的搜作结果:在"+directoryPath+"路径下未找到此文件");
}else{
System.out.println(searchFileName+"找到了"+getResult.size()+"个结果:");
for(int i=0;i<getResult.size();i++){
System.out.println(getResult.get(i));//遍历输出查询结果
}
}
//执行完成清空List结果集
searchResult.clear();
}
public static List<File> getFiles(File file, String filename){
for(File f : file.listFiles()){
if(f.isDirectory()){//如果该对象是目录,则递归进入该目录继续搜索遍历
getFiles(f,filename);
}
else{ //不是目录则进行匹配操作
if(f.getName().endsWith(filename)){ //endWith匹配字符串尾部,这里匹配的是所有文件名尾部
searchResult.add(f);
}
}
}
return searchResult;
}
}
我在D:\JAVA\FileTest的目录结构如下:
D:\JAVA\FILETEST
│ 测试.txt
└─测试文件夹
└─测试文件夹的子文件夹
a.txt
程序输出结果: