Computer >> บทช่วยสอนคอมพิวเตอร์ >  >> การเขียนโปรแกรม >> Java

แสดงรายชื่อไฟล์อย่างเดียวจาก Directory ใน Java

วิธีที่ 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