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

ดึงรายชื่อไฟล์ JPG ใน Directory ด้วย Java

วิธีที่ 1: FilenameFilter (Legacy IO - Top Level)

import java.io.*;

public class Sample {
    public static void main(String args[]) throws IOException {
        File directoryPath = new File("D:\\ExampleDirectory");

        FilenameFilter jpgFilter = (dir, name) -> name.toLowerCase().endsWith(".jpg");
        String[] jpgFiles = directoryPath.list(jpgFilter);

        System.out.println("JPG Files:");
        for (String f : jpgFiles) System.out.println(f);
    }
}

วิธีที่ 2: NIO.2 Files.walk + Stream (Recursive)

import java.io.IOException;
import java.nio.file.*;
import java.util.stream.Stream;

public class Example {
    public static void main(String[] args) throws IOException {
        Stream path = Files.walk(Paths.get("D:\\ExampleDirectory"));
        path.filter(p -> p.toString().toLowerCase().endsWith(".jpg"))
            .forEach(System.out::println);
    }
}

ผลลัพธ์ตัวอย่าง

JPG Files:
cassandra_logo.jpg
cat.jpg
coffeescript_logo.jpg
javafx_logo.jpg

ขยาย: รองรับหลาย Extension

FilenameFilter imageFilter = (dir, name) -> {
    String lower = name.toLowerCase();
    return lower.endsWith(".jpg") || lower.endsWith(".jpeg") || lower.endsWith(".png");
};

สรุป

  • Top-level: File.list(FilenameFilter) เร็ว สำหรับ Directory เดียว
  • Recursive: Files.walk() + filter(...endsWith(...)) ครอบคลุม Subdirectories
  • ใช้ .toLowerCase() ก่อน endsWith() เพื่อ Case-insensitive