下面的例子中我们创建了一个FileFilter类,此类根据文件名的扩展名是否为.txt来筛选文件。创建FileFilter实例之后需要将此实例作为参数传给File的listFiles(fileFilter)方法,此方法会返回符合条件文件的数组,如下代码示例:

package cn.outofmemory.examples;

import java.io.File;
import java.io.FileFilter; /**
*
* @author outofmemory.cn
*/
public class FileUtil { public void myListFiles(String dir) { File directory = new File(dir); if (!directory.isDirectory()) {
System.out.println("No directory provided");
return;
} File[] files = directory.listFiles(filefilter); for (File f : files) {
System.out.println(f.getName());
}
} //create a FileFilter and override its accept-method
FileFilter filefilter = new FileFilter() { public boolean accept(File file) {
//if the file extension is .txt return true, else false
if (file.getName().endsWith(".txt")) {
return true;
}
return false;
}
}; public static void main(String[] args) {
FileUtil fileutil = new FileUtil();
fileutil.myListFiles("C:\\\\temp");
}
}

使用FilenameFilter实现图片过滤,只要.gif,.jpg,.png文件。

java 代码

程序测试类:

java 代码

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

最新文章

  1. Keepalived+LVS+nginx双机热备
  2. Google Map API V3开发(1)
  3. java下的字符流
  4. SpringMVC学习笔记(四)
  5. spring + Quartz定时任务配置
  6. 1470. UFOs(三维树状数组)
  7. Dao模型设计(基于Dao与Hebernate框架)
  8. 利用MVC的过滤器实现url的参数加密和解密
  9. 从奥鹏一个答案提取页面 看jquery知识点
  10. 页面插入Flash方式
  11. Linux中/etc/passwd文件与/etc/shadow文件解析.
  12. hdu Number Sequence
  13. Zepto swipe 无效(坑)
  14. [BZOJ 3629][ JLOI2014 ]聪明的燕姿
  15. 团队作业4——第一次项目冲刺(Alpha版本)第五天
  16. ●BZOJ 2049 [Sdoi2008]Cave洞穴勘测
  17. Hadoop系列007-HDFS客户端操作
  18. 电脑浅色显示器不显示怎么办,如何用PS去除logo底色
  19. git 每次push和pull都需要提交密码
  20. ML.NET教程之出租车车费预测(回归问题)

热门文章

  1. 文本输入框和下拉菜单特效-用正则表达式验证E-mail格式
  2. LeetCode OJ 142. Linked List Cycle II
  3. Django:之中间件、微信接口和单元测试
  4. Django: 之用户注册、缓存和静态网页
  5. 循环ip段 转载 出处不明
  6. BIND rndc—使用说明
  7. asp.net textbox控件readonly为true时,后台取值的问题
  8. Android ADT安装时卡在Calculating requirements and dependencies
  9. mysql if then
  10. ip地址的网络配置