How to replace File.listFiles(FileFilter filter) with nio in



我有一些用Java 6编写的文件I/O遍历代码,试图将其移动到Java 7中的新I/O,但我找不到任何替代这种东西的方法。

File[] files = dir.listFiles(AudioFileFilter.getInstance());

也就是说,没有办法只过滤路径文件,它返回文件列表,所以如果我想限制在它调用的方法中使用file,我必须将每个文件转换为路径(file.toPath),这似乎相当费力。

我确实看了FileVisitor,但这似乎不允许你控制如何遍历树,所以我认为它对我不起作用。

那么,Java 7中的Path for File在多大程度上可以替代呢?

使用文件#newDirectoryStream和DirectoryStream.Filter

这是代码:

DirectoryStream<Path> stream = Files.newDirectoryStream(dir, new DirectoryStream.Filter<Path>() {
        @Override
        public boolean accept(Path entry) throws IOException 
        {
            return Files.isDirectory(entry);
        }
    });
for (Path entry: stream) {
      ...
}

顺便说一句,为了简单起见,我省略了上面代码中的异常处理。

相关内容

  • 没有找到相关文章

最新更新