File类
file类既能代表一个特定文件的名称,又能代表一个目录下的一组文件的名称。如果指的是一个文件集,则可以对此集合调用list()方法,这个方法会返回一个字符数组。很容易就可以立即返回的是一个数组而不是某个更具有灵活性的类容器,因为元素的个数是固定的,所以如果想取得不同的目录列表,只需要在创建一个不同的File对象就可以。
目录列表器
假设我们查看一个目录列表,使用两种方法来使用File对象。如果调用不带参数的list(),便可以获得此File对象包含的全部列表。
DirFilter类实现了FilenameFilter接口。DirFilter这个类存在的唯一原因是将accept()方法,创建这个类的目的是将accept()方法提供给list用,使得list()可以毁掉accept(),进而决定那些文件包含在列表中。
accept()方法必须接受一个代表某个特定文件所在目录的File对象,以及包含该文件名的一个String。list()方法会为目录对象下的每个文件名调用accept(),来判断该文件是否包含在内,判断结果由accept()返回的布尔值表示。
-
匿名内部类
传向filter()的参数必须是final的,这样才能使用来自该类范围之外的对象。
对以上程序进行改进,定义一个作为list()参数的匿名内部类:
既然匿名内部类直接使用args[0],则传递给main()方法的参数现在就是final的。该例自展示了匿名内部类怎样通过创建特定的一次性的类来哦解决问题。
-
目录实用工具
下面的实用工具类就可以通过使用local()方法产生由本地目录中的文件构成的File对象数组,或者通过使用walk()方法给定目录下的由整个目录树中所有文件构成的List