首页 理论教育 Java程序设计:快速列出当前目录下的目录和文件

Java程序设计:快速列出当前目录下的目录和文件

时间:2023-11-01 理论教育 版权反馈
【摘要】:在DOS命令中,可以用dir列出当前目录下的子目录和子文件,Java也提供了相关方法。如果此抽象路径名不表示一个目录,或者发生I/O错误,则返回null。如果给定filter为null,则接受所有名称。图10-3列出指定目录下的子目录和子文件程序第5行,指定的目录为当前项目所在的根目录。在例10-3的基础上,只列出后缀为“.mp3”的文件。图10-5演示文件过滤器的使用程序第7行定义一个有参过滤器filter,参数为文件后缀名。

Java程序设计:快速列出当前目录下的目录和文件

在DOS命令中,可以用dir列出当前目录下的子目录和子文件,Java也提供了相关方法。

(1)public String[]list():返回字符串数组,这些字符串指定此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果此抽象路径名不表示一个目录,或者发生I/O错误,则返回null。

(2)public String[]list(FilenameFilter filter):返回一个字符串数组,这些字符串指定此抽象路径名表示的目录中满足指定过滤器的文件和目录。除了返回数组中的字符串必须满足过滤器外,此方法的行为与list()方法相同。如果给定filter为null,则接受所有名称。否则,当且仅当在此抽象路径名及其表示的目录中的文件名或目录名上调用过滤器的FilenameFilter.accept(java.io.File,java.lang.String)方法返回true时,该名称才满足过滤器。

(3)public File[]listFiles():返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中的文件和目录。如果目录为空,那么数组也将为空。如果抽象路径名不表示一个目录,或者发生I/O错误,则返回null。

(4)public File[]listFiles(FilenameFilter filter):返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。除了返回数组中的路径名必须满足过滤器外,此方法的行为与list Files()方法相同。

(5)public File[]list Files(FileFilter filter):返回抽象路径名数组,这些路径名表示此抽象路径名表示的目录中满足指定过滤器的文件和目录。除了返回数组中的路径名必须满足过滤器外,此方法的行为与list Files()方法相同。如果给定filter为null,则接受所有路径名。否则,当且仅当在路径名上调用过滤器的FileFilter.accept(java.io.File)方法返回true时,该路径名才满足过滤器。

【例10-3】

列出指定目录下的子目录和子文件。

测试类Dir FileList Test1如图10-3所示。

图10-3 列出指定目录下的子目录和子文件

(1)程序第5行,指定的目录为当前项目所在的根目录。当然也可以换成其他目录测试。

(2)程序第9行,在列出给定路径时,要判断是否是一个真实存在的目录,若不是则抛出异常,或者直接return也可以。

(3)程序第13行,是为了增强程序健壮性。例如,访问隐藏的系统文件夹System Volume Information,由于程序无法访问,表示该文件夹的File对象在调用listFiles()方法时会返回null,后续遍历该对象数组时会出现空指针异常。

【例10-4】(www.xing528.com)

定义一个文件名后缀的过滤器,并使用该过滤器过滤指定目录下的子文件。

在例10-3的基础上,只列出后缀为“.mp3”的文件。

步骤1:在cn.linaw.chapter10.demo01包下新建一个过滤器My FileNameFilter类,如图10-4所示。

图10-4 创建过滤器MyFileNameFilter类

(1)程序第4行是一个实现FileFilter接口的文件过滤器。

(2)程序第6行是一个带参构造方法,参数为String型过滤条件。

(3)程序第11~16行是实现FileFilter接口的accept抽象方法。

步骤2:编写测试类Dir FileList Test2,如图10-5所示。

图10-5 演示文件过滤器的使用

(1)程序第7行定义一个有参过滤器filter,参数为文件后缀名。

(2)程序第12行File对象调用带过滤器的listFiles(FileFilter filter)方法,返回的File数组各File对象已经满足了指定的过滤器。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈