集册 Java实例教程 使用SimpleFileVisitor类遍历文件系统

使用SimpleFileVisitor类遍历文件系统

欢马劈雪     最近更新时间:2020-01-02 10:19:05

565
使用SimpleFileVisitor类遍历文件系统
import java.io.IOException;

import java.nio.file.FileVisitResult;

import java.nio.file.Files;

import java.nio.file.Path;
/* 
*来 自
 时代Java公众号 - nowjava.com
*/

import java.nio.file.Paths;

import java.nio.file.SimpleFileVisitor;

import java.nio.file.attribute.BasicFileAttributes;


public class Main {

  public static void main(String[] args) {

    try {

      Path path = Paths.get("/home");

      ListFiles listFiles = new ListFiles();

      Files.walkFileTree(path, listFiles);

    } catch (IOException ex) {

      ex.printStackTrace();

    }

  }

  /*
  来 自*
   时   代     Java  公  众  号 - nowjava.com
  */

}


class ListFiles extends SimpleFileVisitor<Path> {

  private final int indentionAmount = 3;

  private int indentionLevel;


  public ListFiles() {

    indentionLevel = 0;

  }


  private void indent() {

    for (int i = 0; i < indentionLevel; i++) {

      System.out.print(' ');

    }

  }


  @Override

  public FileVisitResult visitFile(Path file, BasicFileAttributes attributes) {

    indent();

    System.out.println("Visiting file:" + file.getFileName());

    return FileVisitResult.CONTINUE;

  }


  @Override

  public FileVisitResult postVisitDirectory(Path directory, IOException e)

      throws IOException {

    indentionLevel -= indentionAmount;

    indent();

    System.out.println("Finished with the directory: "

        + directory.getFileName());

    return FileVisitResult.CONTINUE;

  }


  @Override

  public FileVisitResult preVisitDirectory(Path directory,

      BasicFileAttributes attributes) throws IOException {

    indent();

    System.out.println("About to traverse the directory: "

        + directory.
展开阅读全文