在Java中如何递归遍历目录

使用下面的方法,我们可以递归访问目录中所有的子目录

//-> 使用 IO
recurseFolder(folder);

//-> 使用 NIO
//注意:除非作为参数显式传递给Files.walkFileTree,否则不遍历符号链接

Files.walkFileTree(directory, new SimpleFileVisitor() {
      @Override
      public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws
IOException {
          System.out.println("d " + selectedPath.toAbsolutePath());
          return FileVisitResult.CONTINUE;
      }

      @Override
      public FileVisitResult visitFile(Path selectedPath, BasicFileAttributes attrs) throws
IOException {
            System.out.println("f " + selectedPath.toAbsolutePath());
            return FileVisitResult.CONTINUE;
      }
});
private static void recurseFolder(File folder) {
      for (File selectedFile : folder.listFiles()) {
            System.out.println((selectedFile.isDirectory() ? "d" : "f") + " " + selectedFile.getAbsolutePath());
           if (selectedFile.isDirectory()) {
                 //Note: Symbolic links are followed
                 recurseFolder(selectedFile);
            }
      }
}
日期:2020-06-02 22:15:23 来源:oir作者:oir