你总是希望能够限制由list( )方法返回的文件数目,使它仅返回那些与一定的文件名方式或者过滤(filter)相匹配的文件。为达到这样的目的,必须使用list( )的第二种形式:

String[ ] list(FilenameFilter FFObj)

该形式中,FFObj是一个实现FilenameFilter接口的类的对象。
FilenameFilter仅定义了一个方法,accept( )。该方法被列表中的每个文件调用一次。它的通常形式如下:

boolean accept(File directory, String filename)

当被directory 指定的目录中的文件(也就是说,那些与filename 参数匹配的文件)包含在列表中时,accept( )方法返回true ,当这些文件没有包括在列表中时,accept( )返回false。

下面显示的OnlyExt 类实现FilenameFilter接口,它被用来修饰前面的程序,限制由 list( )返回的文件名的可见度,把对象被创建时以指定扩展名结束的文件归档。

import java.io.*;
public class OnlyExt implements FilenameFilter { String ext; public OnlyExt(String ext) { this.ext = "." + ext; } public boolean accept(File dir, String name) { return name.endsWith(ext); }
}

修改过的目录列表程序显示如下。现在它只显示以.html 为扩展名的文件。

// Directory of .HTML files.
import java.io.*;
class DirListOnly { public static void main(String args[]) { String dirname = "/java"; File f1 = new File(dirname); FilenameFilter only = new OnlyExt("html"); String s[] = f1.list(only); for (int i=0; i < s.length; i++) { System.out.println(s[i]); } }
}

开课吧Java课堂之如何使用FilenameFilter相关推荐

  1. 开课吧Java课堂:如何使用比较函数?

    下面是一个说明定制的比较函数能力的例子.该例子实现compare( )方法以便它按正常顺序的逆向进行操作.因此,它使得一个树集合按逆向的顺序进行存储. // Use a custom comparat ...

  2. 开课吧Java课堂:是什么是比较函数?

    TreeSet和TreeMap都按排序顺序存储元素.然而,精确定义采用何种"排序顺序"的是比较函数. 通常在默认的情况下,这些类通过使用被Java称之为"自然顺序&quo ...

  3. 开课吧Java课堂:是什么TreeMap类

    TreeMap类通过使用树实现Map接口.TreeMap提供了按排序顺序存储关键字/值对的有效手段,同时允许快速检索.应该注意的是,不像散列映射,树映射保证它的元素按照关键字升序排序. 下面的Tree ...

  4. 开课吧Java课堂:什么是HashMap类

    HashMap类使用散列表实现Map接口.这允许一些基本操作如get( )和put( )的运行时间保持恒定,即便对大型集合,也是这样的. 下面的构造函数定义为: HashMap( ) HashMap( ...

  5. 开课吧Java课堂:如何将用户定义的类存储于Collection中

    为了简单,类集并没有被限制为只能存储内置的对象.完全相反的是,类集的能力是它能存储任何类型的对象,包括你所创建的类的对象.例如,考虑下面的例子,在这个例子中使用LinkedList存储信箱地址. // ...

  6. 开课吧Java课堂:如何使用迭代函数

    在通过迭代函数访问类集之前,必须得到一个迭代函数.每一个Collection类都提供一个iterator( )函数,该函数返回一个对类集头的迭代函数.通过使用这个迭代函数对象,可以访问类集中的每一个元 ...

  7. 开课吧Java课堂:什么是ArrayList类

    ArrayList类扩展AbstractList并执行List接口.ArrayList支持可随需要而增长的动态数组.在Java中,标准数组是定长的.在数组创建之后,它们不能被加长或缩短,这也就意味着你 ...

  8. 开课吧Java课堂:StringBuffer全解,非常详细

    StringBuffer是提供了大量的字符串功能的字符串(String)类的对等类.正如你所知,字符串(String)表示了定长,不可变的字符序列.相反,StringBuffer表示了可变长的和可写的 ...

  9. 开课吧Java课堂:如何利用valueOf( )方法实现数据转换

    valueOf( )方法将数据的内部格式转换为可读的形式.它是一种静态方法,对于所有Java内置的类型,在字符串(String)内被重载,以便每一种类型都能被转换成字符串. valueOf( )方法还 ...

最新文章

  1. python中执行linux命令(调用linux命令)_Python调用Linux bash命令
  2. 阿里再次主办大数据世界杯, KDD Cup2020正式开赛
  3. 检查型异常(Checked Exception)与非检查型异常(Unchecked Exception)
  4. Java中resource文件夹
  5. void和void*详解 v2
  6. jvm破坏双亲委派_破坏JVM
  7. Mybatis非mapper代理配置
  8. b丅151组成的充电器电路_一文读懂uc3842组成的开关电源电路
  9. Linux 设备驱动的固件加载-转载
  10. Ubuntu 16.04 LTS深度美化!
  11. python矢量图_使用python制作矢量图
  12. EXCEL柱状图制作(三)
  13. 【CSS】flex布局平分三等分中间间距相等且两端对齐
  14. 计算机打不开硬盘,电脑硬盘打不开的原因 如何解决电脑硬盘问题
  15. 如何学会做一名优秀的下属
  16. 借鉴美团文章实现的动态线程池,已开源
  17. Verilog HDL基础知识
  18. 琐碎的知识点(xly)
  19. Verilog学习笔记(一)
  20. PHP经典算法小羊繁殖

热门文章

  1. [转载] Python正则表达式(含正则表达式速查表)
  2. [转载] python3基础:异常处理及python常见异常类型总结
  3. verilog状态机以及编码详解
  4. JavaScript中||(或)逻辑运算符注意点
  5. 浏览文件神器!且可以计算所有文件代码的行数!
  6. 《那些年啊,那些事——一个程序员的奋斗史》——81
  7. 数据结构上机实践第四周项目7 - 多项式求和
  8. 【RobotStudio学习笔记】(六)有效载荷
  9. mac 您没有权限打开应用程序_Mac应用程序无法打开或文件损坏的解决方法
  10. html如何与js链接,链接index.html client.js和server.js