Junior
Čo môžete povedať o rozhraní FileFilter?
sobes.tech AI
Odpoveď od AI
FileFilter je funkčné rozhranie v balíku java.io, ktoré sa používa na filtrovanie súborov na základe zadaných kritérií. Má jednu abstraktnú metódu: boolean accept(File pathname).
Signatúra metódy:
// Kontroluje, či zadaná cesta zodpovedá názvu súboru.
boolean accept(File pathname);
Metóda accept(File pathname) vracia true, ak súbor alebo adresár reprezentovaný objektom pathname spĺňa podmienky filtra, a false v opačnom prípade.
FileFilter sa často používa v metódach, ktoré pracujú so zoznamami súborov, ako sú:
list(FileFilter filter)v triedeFile.listFiles(FileFilter filter)v triedeFile.
Príklad použitia na filtrovanie iba súborov (vylúčenie adresárov):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Aktuálny adresár
// Vytvárame FileFilter na prijatie iba súborov
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Vráti true, ak je to súbor
}
};
// Používame filter na získanie zoznamu súborov
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Použitie lambda výrazu (dostupné od Java 8, keďže FileFilter je funkčné rozhranie):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Aktuálny adresár
// Používame lambda výraz ako FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filter pre adresáre
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter umožňuje vytvárať opakovane použiteľné kritériá filtrovania pre prácu so súborovým systémom.