Java文件操作(1) 1.File类 Java中是通过File类来存取文件和路径的。没错,这是一个非常容易混淆的名字,你可能认为它仅仅能够处理文件,实际上它既可以代表了一个特定的文件,又可以代表某个文件夹内的文件名列表。如果它是文件,你可以通过length()方法获取它的大小、通过lastModified()方法最后修改时间,等等;如果它代表文件名列表,则可以用list()得到表示文件名列表的字符串数组,或者用listFiles()方法得到表示子文件列表的File数组。总之,在Java中文件夹和文件已经被统一成一个抽象的概念,只要了解它的原理,使用起来将会感到非常方便。 2.文件过滤 我们说过,File类的listFiles()方法可以得到表示子文件列表的File数组,如果仅仅想要得到特定的子文件而过滤掉其他的文件,则可以给listFiles()方法加上参数??一个过滤器。 public interface FilenameFilter { 我们要得到某个File类的所有子文件夹,过滤器FolderFilter类可以这么写: class FolderFilter implements FilenameFilter { 你看,FolderFilter类通过implements表示对FilenameFilter接口的支持,然后实现了这个接口的accept方法。具体地,在accept方法中,通过传入的dir参数和name参数新建一个File实例,然后通过调用isDirectory()方法判断这个实例是否是文件夹,是则返回True,否则返回False。 注意到这个方法必须和FilenameFilter接口里面声明的一模一样。正因为如此,每次手动输入接口声明既麻烦又容易出错。还是让Eclipse干体力活吧!打开Eclipse,新建一个类,名字为FolderFilter,按下Interfaces文本列表右边的Add按钮,在弹出的对话框中输入FilenameFilter即可。实际上,Eclipse会根据你的输入进行筛选,非常聪明(见图1)。
假设path是一个File类的实例,我们便可以通过File[] subFolders = path.listFiles(new FolderFilter())得到path的子文件夹列表了。 这就是接口的使用。加上前两次我们讲解的Java语言中关于封装、继承和多态的知识,Java面向对象编程就基本讲完了。 3.过滤器原理 或许你会觉得过滤文件夹还要手动编写一个类,实在是太麻烦了。实则不然。 |
温馨提示:喜欢本站的话,请收藏一下本站!