java File类与FilenameFilter类的学习

转载 2015年07月10日 14:35:50

File类这个名字有一定的误导性,我们可能会以为它指代的是文件,实际上却并非如此。它既能代表一个特定文件的名称,又能代表一个目录下一组文件的名称。如果它指的是一个文件集,我们就可以对此集合调用list方法,这个方法会返回一个字符数组。如果我们想获得一个受限列表,例如,想得到所有扩展名为.java的文件,那么我们就要使用“目录过滤器”(FilenameFilter),这个类会告诉我们怎样显示符合条件的File对象。FilenameFilter是个接口,它的实现非常简单:

interface FilenameFilter
{
  public boolean accept(File file, String name)
}

下面给大家举个例子,作用是使用FilenameFilter实现图片过滤,保留.gif,.jpg,.png文件。

import java.io.File;
import java.io.FilenameFilter;

public class ImageFilter implements FilenameFilter
{
    public boolean isGif(String file)
    {
        if (file.toLowerCase().endsWith(".gif"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public boolean isJpg(String file)
    {
        if (file.toLowerCase().endsWith(".jpg"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public boolean isPng(String file)
    {
        if (file.toLowerCase().endsWith(".png"))
        {
            return true;
        }
        else
        {
            return false;
        }
    }

    public boolean accept(File dir, String fname)
    {
        return (isGif(fname) || isJpg(fname) || isPng(fname));
    }
}
public class ImageFilterTest
{
    public static void main(String[] args)
    {
        File directory = new File("E:\\FilenameFilter\\images");
        String[] images = directory.list(new ImageFilter());
        System.out.println("size=" + images.length);
        for (int i = 0; i < images.length; i++)
        {
            String imgfile = images[i];
            System.out.println("imgfile=" + imgfile);
        }
    }
}

程序分析:
ImageFilter 类对象的任务就是提供一个accept()的方法。这样当list()判断需要返回哪些文件名的时候,能够回过头来调用accept( )方法。因此,这种结构通常被称为回调(callback)。更准确地说,由于list()实现了基本功能,而FilenameFilter提供了对外服务所需的算法,因此这是一种”策略模式”。由于list()拿FilenameFilter对象当参数,因此可以将任何实现FilenameFilter接口的对象传给它,并以此控制list()的工作方式。

转载自:http://swiftlet.net/archives/1169
参考:http://blog.csdn.net/xiazdong/article/details/6928455

java基础之File对象中的FilenameFilter文件过滤以及递归列出指定文件夹路径下的所有文件和所有文件夹

package com.j2se.fileDemo; import java.io.File; import java.io.FilenameFilter; /** * File对象中的listF...
  • chenchudongsg
  • chenchudongsg
  • 2014年09月29日 09:10
  • 1366

关于java基础--File类与FileFilter过滤器的详解与测试

1,File  * File类是与平台无关的一个指向路径的文件或者目录的一个类  * 如果要在程序中操作某个文件,就用这个文件的路径去创建一个File对象,此时这个对象就指向那个路径的文件  * 就可...
  • yzjyhp
  • yzjyhp
  • 2015年07月22日 21:21
  • 2926

Java File类学习笔记2:File类对象及常用操作方法

一、 文件、相对路径与绝对路径 1.文件  (1)标准文件:就像图片,音乐文件等。  (2)目录文件:也就是平常所说的文件夹。  (3)虚拟内存文件:系统在运行程序时生成的临时性文件。 2.文件的路径...
  • cjp0326
  • cjp0326
  • 2015年07月30日 13:19
  • 3170

[疯狂Java]I/O:File(文件类,也是文件流的节点)、FilenameFilter(文件过滤器)

1.
  • Lirx_Tech
  • Lirx_Tech
  • 2016年04月21日 14:01
  • 816

黑马程序员——07File类,文件过滤器FilenameFilter以及递归

------- android培训、java培训、期待与您交流! ----------  ------- android培训、java培训、期待与您交流! ----------...
  • qq_16887417
  • qq_16887417
  • 2014年06月27日 15:21
  • 392

java基础之File对象中的FilenameFilter文件过滤以及递归列出指定文件夹路径下的所有文件和所有文件夹

package com.j2se.fileDemo; import java.io.File; import java.io.FilenameFilter; /** * File对象中的listF...
  • chenchudongsg
  • chenchudongsg
  • 2014年09月29日 09:10
  • 1366

FileFilter和FilenameFilter类性能比较(zz)

FileFilter和FilenameFilter 两个接口是在文件搜索中常用的,有什么区别?    下面通过一个测试程序来初步检验两个接口的性能。       方法:在一个目...
  • cdestiny
  • cdestiny
  • 2012年09月09日 11:40
  • 471

FileFilter和FilenameFilter类性能比较

FileFilter和FilenameFilter 两个接口是在文件搜索中常用的,有什么区别?        (什么是FileFilter?         什么是FilenameFilt...
  • kjfcpua
  • kjfcpua
  • 2013年01月28日 11:00
  • 7216

File中的FileFilter和FilenameFilter接口

接口FileFilter 用于抽象路径名的过滤器,此接口的实例可传递gei
  • lzm1340458776
  • lzm1340458776
  • 2014年07月13日 16:21
  • 2771

Java File类学习笔记4:自定义一个类,过滤指定扩展名的文件

自定义一个类,继承FileNameFilter类,获得某一目录下所有指定扩展名的文件。 方法一: /** * 说明: * 自定义FilterBySaz类,过滤指定扩展名的文件 * */ ...
  • cjp0326
  • cjp0326
  • 2015年08月04日 11:27
  • 2514
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:java File类与FilenameFilter类的学习
举报原因:
原因补充:

(最多只允许输入30个字)