要求:

传入文件名(或者文件类型),和要查找的文件目录,使用递归遍历此文件目录下的所有文件,找到该文件对象并输出

如果没有找到则输出未找到

 

直接上代码

  1. import java.io.File;
  2. import java.util.ArrayList;
  3. import java.util.List;
  4. public class SearchFile {
  5. public static List<File> searchResult = new ArrayList<>();//存储查询结果
  6. public static void main(String[] args) {
  7. //进行测试
  8. searchFilesByname("D:\\JAVA\\FileTest","a.txt");
  9. searchFilesByname("D:\\JAVA\\FileTest","txt");
  10. searchFilesByname("D:\\JAVA\\FileTest","java");
  11. searchFilesByname("D:\\JAVA\\FileTest","xt");
  12. }
  13. public static void searchFilesByname(String directoryPath,String searchFileName){
  14. List<File> getResult = getFiles(new File(directoryPath),searchFileName);//获取查询结果
  15. System.out.println("-----------------------搜索结果-----------------");
  16. if(getResult.isEmpty()){
  17. System.out.println(searchFileName+"的搜作结果:在"+directoryPath+"路径下未找到此文件");
  18. }else{
  19. System.out.println(searchFileName+"找到了"+getResult.size()+"个结果:");
  20. for(int i=0;i<getResult.size();i++){
  21. System.out.println(getResult.get(i));//遍历输出查询结果
  22. }
  23. }
  24. //执行完成清空List结果集
  25. searchResult.clear();
  26. }
  27. public static List<File> getFiles(File file, String filename){
  28. for(File f : file.listFiles()){
  29. if(f.isDirectory()){//如果该对象是目录,则递归进入该目录继续搜索遍历
  30. getFiles(f,filename);
  31. }
  32. else{ //不是目录则进行匹配操作
  33. if(f.getName().endsWith(filename)){ //endWith匹配字符串尾部,这里匹配的是所有文件名尾部
  34. searchResult.add(f);
  35. }
  36. }
  37. }
  38. return searchResult;
  39. }
  40. }

我在D:\JAVA\FileTest的目录结构如下:

D:\JAVA\FILETEST

│ 测试.txt

└─测试文件夹

└─测试文件夹的子文件夹

a.txt

 

程序输出结果: