20.4.3 为路径和文件系统操作使用NIO(3)
使用“\*”和“\?”可以指定一个“*”或“?”字符。为了指定“\”字符,需要使用“\\”。可以将下面这个newDirectoryStream()方法调用替换到前面的程序中来进行试验:
- Files.newDirectoryStream(Paths.get(dirname), "{Path,Dir}*.{java,class}")
这个调用获取的目录流只包含名称由“Path”或“Dir”开头、并且扩展名为“java”或“class”的文件。因此,能够匹配DirList.java和PathDemo.java这类名称,但是不能匹配MyPathDemo.java。
过滤目录的另外一种方式是使用下面这个版本的newDirectoryStream()方法:
其中,DirectoryStream.Filter是定义了以下方法的接口:
- static DirectoryStream<Path> newDirectoryStream(Path dirPath,
- DirectoryStream.Filter<? super Path> filefilter)
- throws IOException
- boolean accept(T entry) throws IOException
在这个方法中,T将会是Path类型。如果希望在列表中包含entry,就返回true;否则返回false。这种形式的newDirectoryStream()方法的优点是:可以基于文件名之外的其他内容过滤目录。例如,可以根据文件大小、创建日期、修改日期或属性进行过滤。
下面的程序演示了这个过程,该程序只列出可写的文件。
|