Junior
Co můžete říct o rozhraní FileFilter?
sobes.tech AI
Odpověď od AI
FileFilter je funkcionální rozhraní v balíčku java.io, které se používá k filtrování souborů na základě zadaných kritérií. Má jednu abstraktní metodu: boolean accept(File pathname).
Podpis metody:
// Kontroluje, zda zadaná abstraktní cesta odpovídá názvu souboru.
boolean accept(File pathname);
Metoda accept(File pathname) vrací true, pokud soubor nebo adresář reprezentovaný objektem pathname splňuje podmínky filtru, jinak false.
FileFilter se často používá v metodách, které pracují se seznamy souborů, například:
list(FileFilter filter)ve tříděFile.listFiles(FileFilter filter)ve tříděFile.
Příklad použití pro filtrování pouze souborů (vyloučení adresářů):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Aktuální adresář
// Vytvoříme FileFilter, který přijímá pouze soubory
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Vrací true, pokud je to soubor
}
};
// Použijeme filtr k získání seznamu souborů
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Použití lambda výrazů (dostupné od Java 8, protože FileFilter je funkční rozhraní):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Aktuální adresář
// Použití lambda výrazu jako FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtr pro adresáře
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter umožňuje vytvářet znovu použitelné kritéria filtrování pro práci se souborovým systémem.