猿问
回到首页
个人中心
反馈问题
注册登录
下载APP
首页
课程
实战
体系课
手记
专栏
慕课教程
如何迭代Java目录中的文件?
如何迭代Java目录中的文件?
我需要一个目录中所有文件的列表,包括所有子目录中的文件。用Java完成目录迭代的标准方法是什么?
蓝山帝景
浏览 656
回答 3
3回答
胡子哥哥
你可以用File#isDirectory()若要测试给定文件(路径)是否为目录,请执行以下操作。如果这是true,然后您只需再次调用同一个方法,并使用它的File#listFiles()结果。这叫做递归.这是一个基本的开球例子。public static void main(String... args) { File[] files = new File("C:/").listFiles(); showFiles(files);}public static void showFiles(File[] files) { for (File file : files) { if (file.isDirectory()) { System.out.println("Directory: " + file.getName()); showFiles(file.listFiles()); // Calls same method again. } else { System.out.println("File: " + file.getName()); } }}请注意,这对StackOverflowError当树的深度超过JVM的堆栈所能容纳的深度时。您可能需要使用迭代方法或尾递归相反,这是另一个主题;)
0
0
0
开心每一天1111
如果您使用的是Java1.7,则可以使用java.nio.file.Files.walkFileTree(...).例如:public class WalkFileTreeExample { public static void main(String[] args) { Path p = Paths.get("/usr"); FileVisitor<Path> fv = new SimpleFileVisitor<Path>() { @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { System.out.println(file); return FileVisitResult.CONTINUE; } }; try { Files.walkFileTree(p, fv); } catch (IOException e) { e.printStackTrace(); } }}如果您使用的是Java 8,则可以使用流接口java.nio.file.Files.walk(...):public class WalkFileTreeExample { public static void main(String[] args) { try (Stream<Path> paths = Files.walk(Paths.get("/usr"))) { paths.forEach(System.out::println); } catch (IOException e) { e.printStackTrace(); } }}
0
0
0
打开App,查看更多内容
随时随地看视频
慕课网APP
相关分类
Java
继续浏览精彩内容
慕课网APP
程序员的梦工厂
打开
继续