Junior
Ką galite pasakyti apie FileFilter sąsają?
sobes.tech AI
Atsakymas iš AI
FileFilter yra funkcinis interfeisas java.io pakete, kuris naudojamas failų filtravimui pagal nustatytus kriterijus. Jis turi vieną abstraktų metodą: boolean accept(File pathname).
Metodų parašas:
// Patikrina, ar nurodytas kelias atitinka failo pavadinimą.
boolean accept(File pathname);
Metodas accept(File pathname) grąžina true, jei failas arba katalogas, pateikti kaip pathname objektas, atitinka filtro sąlygas, ir false priešingu atveju.
FileFilter dažnai naudojamas metodų, kurie dirba su failų sąrašais, pvz.,
list(FileFilter filter)Fileklasėje.listFiles(FileFilter filter)Fileklasėje.
Pavyzdys, kaip filtruoti tik failus (išskyrus katalogus):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Dabartinis katalogas
// Sukuriame `FileFilter`, kuris priima tik failus
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Grąžina true, jei tai failas
}
};
// Naudojame filtrą, kad gauti failų sąrašą
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Naudojant lambda išraišką (pasiekiama nuo Java 8, nes FileFilter yra funkcionalus interfeisas):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Dabartinis katalogas
// Naudojame lambda išraišką kaip `FileFilter`
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Katalogų filtras
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter leidžia kurti pakartotinai naudojamus filtravimo kriterijus darbui su failų sistema.