Ce puteți spune despre interfața FileFilter?
sobes.tech AI
Răspuns de la AI
FileFilter este o interfață funcțională din pachetul java.io, utilizată pentru filtrarea fișierelor pe baza unor criterii specificate. Are o metodă abstractă: boolean accept(File pathname).
Semnătura metodei:
// Verifică dacă calea abstractă specificată corespunde numelui fișierului.
boolean accept(File pathname);
Metoda accept(File pathname) returnează true dacă fișierul sau directorul reprezentat de obiectul pathname îndeplinește condițiile filtrului, și false în caz contrar.
FileFilter este adesea folosit în metode care lucrează cu liste de fișiere, cum ar fi:
list(FileFilter filter)în clasaFile.listFiles(FileFilter filter)în clasaFile.
Exemplu de utilizare pentru filtrarea doar a fișierelor (excluzând directoarele):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Directorul curent
// Creăm un FileFilter pentru acceptarea doar a fișierelor
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Returnează true dacă este fișier
}
};
// Folosim filtrul pentru a obține lista de fișiere
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Utilizarea expresiilor lambda (disponibilă din Java 8, deoarece FileFilter este o interfață funcțională):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Directorul curent
// Folosim o expresie lambda ca FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtru pentru directoare
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter permite crearea de criterii de filtrare reutilizabile pentru lucrul cu sistemul de fișiere.