20.4.3 为路径和文件系统操作使用NIO(2)
其中,dirPath封装了链接到目录的路径。该方法返回一个DirectoryStream<Path>对象,可以使用该对象获取目录的内容。如果发生I/O错误,该方法会抛出IOException异常,并且如果指定的路径不是目录,那么还会抛出NotDirectoryException异常(NotDirectoryException是IOException的子类)。如果不允许访问目录,还可能抛出SecurityException异常。
DirectoryStream<Path>实现了AutoCloseable接口,所以可以使用带资源的try语句进行管理。另外还实现了Iterable<Path>,这意味着可以通过迭代DirectoryStream对象来获取目录的内容。进行迭代时,每个目录实体都是由一个Path实例表示的。迭代DirectoryStream对象的一种简单方式是使用for-each风格的for循环。但是,DirectoryStream<Path>实现的迭代器,针对每个实例只能获取一次,理解这一点很重要。因此,iterator()方法只能调用一次,并且for-each循环只能执行一次。
下面的程序显示了MyDir目录的内容:
|
- static DirectoryStream<Path> newDirectoryStream(Path dirPath, String wildcard)
- throws IOException
在这个版本中,只能获取与通配符文件名相匹配的方法。其中,通配符文件名是由wildcard指定的。对于wildcard,可以指定完整的文件名,也可以指定glob。glob是定义通用模式的字符串,通用模式使用熟悉的“*”和“?”通配符来匹配一个或多个文件。通配符“*”匹配0个或多个任意字符,通配符“?”匹配任意一个字符。在glob中还能识别表20-11中的通配符。
表20-11 在glob中还能识别的通配符