猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
在Java中递归列出文件
在Java中递归列出文件
如何递归列出Java目录下的所有文件?框架提供任何实用工具吗?
我看到了很多令人讨厌的实现。但是没有一个是从框架或者
尼欧
繁星点点滴滴
浏览 439
回答 3
3回答
慕尼黑5688855
Java 8提供了一个很好的流来处理树中的所有文件。Files.walk(Paths.get(path)) .filter(Files::isRegularFile) .forEach(System.out::println);这为遍历文件提供了一种自然的方式。因为它是一个流,所以您可以对结果执行所有良好的流操作,例如限制、分组、映射、提前退出等等。更新:我可以指出还有文件,查找这需要一个双预测如果您需要检查文件属性,这可能会更有效。Files.find(Paths.get(path), Integer.MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile()) .forEach(System.out::println);请注意,虽然JavaDoc没有这样做,但是这个方法可能比文件.走它实际上是相同的,如果还在筛选器中检索文件属性,则可以观察到性能上的差异。最后,如果需要对属性进行筛选,请使用文件,查找,否则使用文件.走,主要是因为有超载,而且更方便。试验应要求,我提供了许多答案的性能比较。检查一下包含结果和测试用例的GitHub项目.
0
0
0
绝地无双
FileUtils有iterateFiles和listFiles方法。试试看。(来自公野)编辑:你可以检查这里不同方法的基准。看上去公域-io方法很慢,所以选择一些速度更快的方法。从这里开始(如有关系)
0
0
0
蛊毒传说
/准备运行import java.io.File;public class Filewalker { public void walk( String path ) { File root = new File( path ); File[] list = root.listFiles(); if (list == null) return; for ( File f : list ) { if ( f.isDirectory() ) { walk( f.getAbsolutePath() ); System.out.println( "Dir:" + f.getAbsoluteFile() ); } else { System.out.println( "File:" + f.getAbsoluteFile() ); } } } public static void main(String[] args) { Filewalker fw = new Filewalker(); fw.walk("c:\\" ); }}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续