文件过滤器

利用java.io包里的File类,可以实现对文件的操作。

现在有个需求,要求遍历一个文件夹及其子文件夹里的所有文件,并且过滤出txt格式的文件,该如何做呢?

实现方法很简单,首先是通过递归遍历文件,然后对获得的文件,判断其是不是以"txt"结尾就可以了。

代码如下:

 1     public static void getAllFile(File dir) {
 2         File[] fileArr = dir.listFiles();
 3         for(File file:fileArr) {
 4             if(file.isDirectory())
 5                 getAllFile(file);
 6             if(file.isFile()) {
 7                 String fileName = file.getName();
 8                 if(fileName.toLowerCase().endsWith("txt"))
 9                     System.out.println(file);
10             }
11         }
12     }

其中,getAllFile的参数dir是文件的路径。

运行结果如图

也可以通过文件过滤器来实现。

 

 

 

代码如下:

class FileFilterImpl implements FileFilter{
    public boolean accept(File pathname) {
        //如果pathname 是个文件夹,返回true
        if(pathname.isDirectory())
            return true;
        return pathname.getName().toLowerCase().endsWith("txt");
    }
public static void getAllFile(File dir) {
     //listFiles()函数将获得的路径名传给accept方法,
//accept方法判断是文件还是文件夹,如果是文件夹返回true,
    //如果是文件,判断是不是txt格式的,如果是返回true,否则返回false
File[] fileArr
= dir.listFiles(new FileFilterImpl()); //文件过滤器 for(File file:fileArr) { if(file.isDirectory()) getAllFile(file); if(file.isFile()) { System.out.println(file); } } }

运行结果如图:

 

 

 

 

 

 

 

 

 

posted @ 2019-11-06 18:48  ShangyiChen  阅读(173)  评论(0编辑  收藏  举报