Java 學習記錄96 — Walk File Tree

張小雄
1 min readDec 17, 2021

--

今天要學的是遍歷資料夾

PrintNames.java

import java.io.IOException;
import java.nio.file.FileVisitResult;
import java.nio.file.Path;
import java.nio.file.SimpleFileVisitor;
import java.nio.file.attribute.BasicFileAttributes;
public class PrintNames extends SimpleFileVisitor<Path> {
@Override
public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException {
System.out.println(file.toAbsolutePath());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException {
System.out.println(dir.toAbsolutePath());
return FileVisitResult.CONTINUE;
}
@Override
public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException {
System.out.println("Error accessing file: " + file.toAbsolutePath() + " " + exc.getMessage());
return super.visitFileFailed(file, exc);
}
}

搭配

System.out.println("------ Walking Tree for Dir2 ------");
Path dir2Path = FileSystems.getDefault().getPath(
"src" + File.separator +
"nonBlockingIO" + File.separator +
"path" + File.separator +
"copyExamples" + File.separator +
"Dir2");
try {
Files.walkFileTree(dir2Path, new PrintNames());
} catch (IOException e) {
System.out.println(e.getMessage());
}

輸出結果:

— — — Walking Tree for Dir2 — — —

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\Dir3

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\Dir3\Dir4

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\Dir3\Dir4\Dir5

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\Dir3\Dir4\Dir5\Dir6

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\Dir3\Dir4\Dir5\Dir6\Dir7

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\Dir3\file1.txt

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\Dir3\file2.txt

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\file1.txt

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\file2.txt

C:\software\JetBrains\IdeaProjects\java-the-complete-java-developer-course\chapter14\src\nonBlockingIO\path\copyExamples\Dir2\file3.dat

// version 2
Path dir2Path = FileSystems.getDefault().getPath(String.join(File.separator, "src", "nonBlockingIO", "path", "copyExamples", "Dir2"));

同學提供的寫法,這樣寫看起來清爽多了

上面代碼全都紀錄在我的 Github

--

--