• 博客园logo
  • 会员
  • 周边
  • 新闻
  • 博问
  • 闪存
  • 众包
  • 赞助商
  • Chat2DB
    • 搜索
      所有博客
    • 搜索
      当前博客
  • 写随笔 我的博客 短消息 简洁模式
    用户头像
    我的博客 我的园子 账号设置 会员中心 简洁模式 ... 退出登录
    注册 登录
月迷津
博客园    首页    新随笔    联系   管理    订阅  订阅

Filter

学习查找文件信息过滤是必不可少的,根据套路,首先需要传入文件路径,调用listfiles方法创建file数组

对数组进行遍历。

示例:

  public static void main(String[] args) {

    File file = new File("D:\\developfile\\project\\oracle\\javaSE\\resource\\test");
    File[] files = file.listFiles();
    for (File f : files) {
      System.out.println(f);
    }
  }

由类实现filefilter接口,将类的对象传入到file数组中过滤掉数据,重写调用accept方法

示例:

    class MyFilter implements FileFilter //实现接口

    File[] files = file.listFiles(new MyFilter()); //传入过滤

    public boolean accept(File pathname) {
      String name = pathname.getName().toLowerCase();
      boolean flag = name.endsWith(".java");
      return flag;
    }

如果要遍历查找到文件夹以及子文件夹下的所有指定类型的文件,这就需要递归的查找

我们可以首先写一个方法:

  public static void getAllFile(File file) {

    File[] files = file.listFiles(new YourFile());
    for (File f : files) {
      if(f.isDirectory()) {
        getAllFile(f);
      }else {
        System.out.println(f);
      }
    }
  }

创建一个类来实现filefilter接口来添加过滤条件实现过滤效果

  class YourFile implements FileFilter{

    public boolean accept(File pathname) {
      //如果是文件夹则不进行过滤,直接添加到File数组中
      if(pathname.isDirectory()) {
        return true;
      }
       return pathname.getName().toLowerCase().endsWith(".java");
     }

   }

通过main方法建立运行入口进行运行

  public static void main(String[] args) {

    File file = new File("D:\\developfile\\project\\oracle\\javaSE\\resource\\test");
    getAllFile(file);
  }

我们可以看到运行结果:

D:\developfile\project\oracle\javaSE\resource\test\c.JAVA
D:\developfile\project\oracle\javaSE\resource\test\d.jAVA
D:\developfile\project\oracle\javaSE\resource\test\java\bcd.java
D:\developfile\project\oracle\javaSE\resource\test\k.java
D:\developfile\project\oracle\javaSE\resource\test\s\sd.java

posted @ 2018-08-21 08:15  月迷津  阅读(193)  评论(0)    收藏  举报
刷新页面返回顶部
博客园  ©  2004-2026
浙公网安备 33010602011771号 浙ICP备2021040463号-3