查找文件

查找文件

1.public string[] list();

返回一个string数组,表示目录中的子文件/目录。

2.public File[] listFile();

返回一个File数组。

 

public class SearchFile {
   public static void main(String[] args) {
       File file = new File("D:\\JavaProject\\BaseJava\\src");//文件搜索的范围
       show1(file);
  }

   private static void show1(File f) {
       File[] files = f.listFiles();

       for (File file : files) {
           if(file.isDirectory()){//判断是否是目录,如果是,就调用show1()方法
               show1(file);
          }else{
               if(file.getName().toLowerCase().endsWith(".jpg")){//判断是否是“.jpg”结尾的文件
                   System.out.println(file);
              }
          }
      }
  }
}

 

文件过滤器

File[] listFile (FileFilter filter)

抽象方法:boolean accept(File pathName);

参数是使用 listFile()方法遍历得到的每一个文件对象。

 

1.实现类做法

public class TestFileFilterImpl implements FileFilter {
   @Override
   public boolean accept(File f) {//重写accept()方法
           if(f.isDirectory()) {
               return true;
          }
           return f.getName().toLowerCase().endsWith("jpg");
      }

  }
public class Application {
   public static void main(String[] args) {

       File f = new File("D:\\JavaProject\\BaseJava\\src");
       show1(f);
  }

   private static void show1(File f) {
       File[] fs = f.listFiles(new TestFileFilterImpl());
       for (File file : fs) {
           if(file.isDirectory()){
               show1(file);
          }
           else{
               System.out.println(file);
          }
      }
  }
}

2.内部类

public class InnnerClass {
   public static void main(String[] args) {
       File file = new File("D:\\JavaProject\\BaseJava\\src");
       show1(file);
  }
    private static void show1(File f) {
        //用匿名内部类实现
       File[]  fs = f.listFiles(new FileFilter() {
           @Override
           public boolean accept(File p) {

               return p.isDirectory() || p.getName().toLowerCase().endsWith("jpg");
          }
      });


       for (File file : fs) {
           if(file.isDirectory()){
               show1(file);
          }
           else{
               System.out.println(file);
          }
      }
    }

3.lambda表达式

File[] fs = f.listFiles(p ->p.isDirectory() ||p.getName().toLowerCase().endsWith("jpg"));



       for (File file : fs) {
           if(file.isDirectory()){
               show1(file);
          }
           else{
               System.out.println(file);
          }
      }

ListFile方法:

1.ListFile会对构造方法中传递的目录进行遍历,获取目录中文件和目录并封装为File对象

2.ListFile会调用参数传递的过滤器中方法accept()方法

3.会把遍历得到的每一个File对象传递给accept方法的参数pathName().

posted @ 2020-08-08 15:23  神也没办法  阅读(95)  评论(0编辑  收藏  举报