使用 Java 递归枚举文件
探索递归列出指定目录下文件的选项,我们发现了各种方法。虽然存在“hacky”实现,但 Java 框架本身提供了强大的实用程序来简化此任务。
Java 8 的简化方法
Java 8 引入了一种方便的基于流的解决方案:
try (Stream<Path> stream = Files.walk(Paths.get(path))) { stream.filter(Files::isRegularFile) .forEach(System.out::println); }
这种方法提供了一种优雅的方式来遍历文件并支持一系列流操作,例如过滤、
Files.find:根据文件属性进行过滤
Java 还提供了 Files.find,它接受双谓词来根据属性过滤文件:
Files.find(Paths.get(path), Integer.MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile()) .forEach(System.out::println);
虽然 Files.find 在过滤属性时可以提供特定的优化,但其性能通常与Files.walk。
性能比较
在评估这些方法时,我们建议根据您的使用场景考虑具体的性能影响。如需更详细的见解,请参阅答案更新中的 GitHub 项目,其中提供了结果和测试用例。
以上是Java如何高效递归枚举文件?的详细内容。更多信息请关注PHP中文网其他相关文章!