Back
Syntax
Study
Editor
Mode:
HTML
CSS
JavaScript
PHP
Reset
Run »
HTML / CSS / JS
import java.io.*; import java.nio.file.*; import java.nio.file.attribute.BasicFileAttributes; import java.util.List; import java.util.stream.Collectors; public class DirectoryWalkDemo { public static void main(String[] args) throws IOException { // Set up a demo directory tree Path root = Path.of("demo-tree"); Files.createDirectories(root.resolve("src/main")); Files.createDirectories(root.resolve("src/test")); Files.writeString(root.resolve("src/main/App.java"), "// App"); Files.writeString(root.resolve("src/main/Util.java"), "// Util"); Files.writeString(root.resolve("src/test/AppTest.java"), "// Test"); Files.writeString(root.resolve("README.md"), "# Demo"); // --- Files.walk: all .java files --- System.out.println("All .java files:"); try (var stream = Files.walk(root)) { stream.filter(p -> p.toString().endsWith(".java")) .forEach(p -> System.out.println(" " + p)); } // --- Files.walk: count files vs directories --- try (var stream = Files.walk(root)) { long fileCount = stream.filter(Files::isRegularFile).count(); System.out.println("Regular file count: " + fileCount); } // --- Files.find with attributes --- System.out.println(" Files larger than 5 bytes:"); try (var stream = Files.find(root, 10, (path, attrs) -> attrs.isRegularFile() && attrs.size() > 5)) { stream.forEach(p -> System.out.println(" " + p)); } // --- SimpleFileVisitor: delete tree --- Files.walkFileTree(root, new SimpleFileVisitor<>() { @Override public FileVisitResult visitFile(Path f, BasicFileAttributes a) throws IOException { Files.delete(f); return FileVisitResult.CONTINUE; } @Override public FileVisitResult postVisitDirectory(Path d, IOException e) throws IOException { Files.delete(d); return FileVisitResult.CONTINUE; } }); System.out.println("Tree deleted. Exists: " + Files.exists(root)); } }
Result
Open