Junior
Co możesz powiedzieć o interfejsie FileFilter?
sobes.tech AI
Odpowiedź od AI
FileFilter jest funkcjonalnym interfejsem w pakiecie java.io, używanym do filtrowania plików na podstawie określonych kryteriów. Posiada jedną metodę abstrakcyjną: boolean accept(File pathname).
Sygnatura metody:
// Sprawdza, czy podana ścieżka abstrakcyjna pasuje do nazwy pliku.
boolean accept(File pathname);
Metoda accept(File pathname) zwraca true, jeśli plik lub katalog reprezentowany przez obiekt pathname spełnia warunki filtra, w przeciwnym razie false.
FileFilter jest często używany w metodach pracujących z listami plików, takich jak:
list(FileFilter filter)w klasieFile.listFiles(FileFilter filter)w klasieFile.
Przykład użycia do filtrowania tylko plików (wykluczając katalogi):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Bieżący katalog
// Tworzymy FileFilter akceptujący tylko pliki
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Zwraca true, jeśli to plik
}
};
// Używamy filtra do pobrania listy plików
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Użycie wyrażeń lambda (dostępne od Java 8, ponieważ FileFilter jest interfejsem funkcyjnym):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Bieżący katalog
// Użycie wyrażenia lambda jako FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtr dla katalogów
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter pozwala na tworzenie wielokrotnego użytku kryteriów filtrowania do pracy z systemem plików.