Junior
Mit tudsz mondani a FileFilter felületről?
sobes.tech MI
Válasz az MI-től
A FileFilter egy funkcionális interfész a java.io csomagban, amelyet fájlok szűrésére használnak adott kritériumok alapján. Egy absztrakt metódusa van: boolean accept(File pathname).
A metódus aláírása:
// Ellenőrzi, hogy a megadott absztrakt útvonal megfelel-e a fájlnévnek.
boolean accept(File pathname);
A accept(File pathname) metódus akkor tér vissza true értékkel, ha a pathname objektummal reprezentált fájl vagy könyvtár megfelel a szűrő feltételeinek, különben false.
A FileFilter gyakran használatos olyan metódusokban, amelyek fájllistákkal dolgoznak, például:
list(FileFilter filter)aFileosztályban.listFiles(FileFilter filter)aFileosztályban.
Példa csak fájlok szűrésére (könyvtárak kizárásával):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Aktuális könyvtár
// Létrehozunk egy FileFiltert, ami csak fájlokat fogad el
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Igazat ad, ha fájl
}
};
// A szűrőt használva kérjük le a fájlok listáját
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
A Java 8-tól elérhető lambda kifejezésekkel (mivel a FileFilter funkcionális interfész):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Aktuális könyvtár
// Lambda kifejezés használata FileFilterként
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Könyvtárak szűrése
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
A FileFilter lehetővé teszi újrahasznosítható szűrőkritériumok létrehozását a fájlrendszerrel való munkához.