今天要學的是遍歷資料夾
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"));
同學提供的寫法,這樣寫看起來清爽多了