• 查找文件


    查找文件

    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().

  • 相关阅读:
    线程同步技术
    线程调用
    进程与线程
    网络配置
    vi
    文件系统
    系统管理命令
    Linux常用命令
    Shell编程
    新版chrome touch警告处理办法
  • 原文地址:https://www.cnblogs.com/stydejava/p/13457955.html
Copyright © 2020-2023  润新知