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