วิธีที่ 1: FileFilter + listFiles() (Legacy IO)
import java.io.*;
public class MyExample {
public static void main(String args[]) throws IOException {
File directoryPath = new File("D:\\ExampleDirectory");
FileFilter dirFilter = File::isDirectory; // Method Reference
File[] dirs = directoryPath.listFiles(dirFilter);
System.out.println("Directories:");
for (File d : dirs) System.out.println(d.getAbsolutePath());
}
}
วิธีที่ 2: NIO.2 Files.walk + Filter (Java 8+)
import java.io.IOException;
import java.nio.file.*;
import java.util.stream.Stream;
public class ListOfFiles {
public static void main(String[] args) throws IOException {
Stream path = Files.walk(Paths.get("D:\\ExampleDirectory"));
path.filter(Files::isDirectory).forEach(System.out::println);
}
}
ผลลัพธ์ตัวอย่าง
Directories: D:\ExampleDirectory\sample directory1 D:\ExampleDirectory\sample directory2 D:\ExampleDirectory\sample directory3 D:\ExampleDirectory\sample directory4
ความแตกต่าง
| คุณสมบัติ | File.listFiles(FileFilter) | Files.walk() |
|---|---|---|
| Recursive | ไม่ (เฉพาะ Top-level) | ใช่ (ทั้ง Tree) |
| Return Type | File[] | Stream |
| Performance | เร็วสำหรับ Shallow | เหมาะ Deep/Recursive |
หมายเหตุ
Files.walk() ต้อง Close Stream (Try-with-resources) ใน Production Code