Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Lấy danh sách file JPG trong thư mục trong Java

Phương thức String[] list(FilenameFilter filter) của lớp File trả về mảng String tên file/thư mục đã lọc theo filter. FilenameFilter là interface với method:

accept(File dir, String name)

Để lấy tên file theo extension: implement interface này và truyền object vào list() method.

Giả sử folder ExampleDirectory ở ổ D có 7 file và 2 thư mục.

Ví dụ 1 - Dùng FilenameFilter

import java.io.File;
import java.io.FilenameFilter;
import java.io.IOException;

public class Sample {
    public static void main(String args[]) throws IOException {
        File directoryPath = new File("D:\\ExampleDirectory");
        
        FilenameFilter jpgFilefilter = new FilenameFilter() {
            public boolean accept(File dir, String name) {
                String lowercaseName = name.toLowerCase();
                if (lowercaseName.endsWith(".jpg")) {
                    return true;
                } else {
                    return false;
                }
            }
        };
        
        String imageFilesList[] = directoryPath.list(jpgFilefilter);
        System.out.println("List of the jpeg files in the specified directory:");
        for (String fileName : imageFilesList) {
            System.out.println(fileName);
        }
    }
}

Đầu ra

List of the jpeg files in the specified directory:
cassandra_logo.jpg
cat.jpg
coffeescript_logo.jpg
javafx_logo.jpg

Ví dụ 2 - Dùng Files.walk() và Stream filter

import java.io.IOException;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import java.util.stream.Stream;

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

Đầu ra

List of the jpeg files in the specified directory:
cassandra_logo.jpg
cat.jpg
coffeescript_logo.jpg
javafx_logo.jpg