วิธีที่ 1: FileFilter + listFiles() (Top-level Only)
import java.io.*;
public class Demo {
public static void main(String args[]) throws IOException {
File directoryPath = new File("D:\\ExampleDirectory");
FileFilter fileFilter = File::isFile;
File[] files = directoryPath.listFiles(fileFilter);
System.out.println("Files only:");
for (File f : files) System.out.println(f.getAbsolutePath());
}
}
วิธีที่ 2: NIO.2 Files.walk + Files::isRegularFile (Recursive)
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::isRegularFile).forEach(System.out::println);
}
}
ผลลัพธ์ตัวอย่าง
Files only:
D:\ExampleDirectory\demo1.pdf
D:\ExampleDirectory\demo2.pdf
D:\ExampleDirectory\sample1.txt
D:\ExampleDirectory\sample2.txt
D:\ExampleDirectory\sample3.txt
D:\ExampleDirectory\sample_jpeg1.jpg
D:\ExampleDirectory\sample_jpeg2.jpg
D:\ExampleDirectory\test1.docx
D:\ExampleDirectory\test2.docx
สรุป
File::isFile / Files::isRegularFile กรองเฉพาะ Regular Files (ไม่รวม Directories, Symbolic Links, etc.)
- Legacy IO:
listFiles() คืน Array ใช้งานง่าย Non-recursive
- NIO.2:
Files.walk() คืน Stream รองรับ Recursive, Functional Operations