Junior
Cosa puoi dirmi sull'interfaccia FileFilter?
sobes.tech AI
Risposta dell'AI
FileFilter è un'interfaccia funzionale nel pacchetto java.io, utilizzata per filtrare i file in base a criteri specificati. Ha un metodo astratto: boolean accept(File pathname).
Firma del metodo:
// Verifica se il percorso astratto specificato corrisponde al nome del file.
boolean accept(File pathname);
Il metodo accept(File pathname) restituisce true se il file o la directory rappresentati dall'oggetto pathname soddisfano le condizioni del filtro, altrimenti false.
FileFilter viene spesso utilizzato in metodi che lavorano con liste di file, come:
list(FileFilter filter)nella classeFile.listFiles(FileFilter filter)nella classeFile.
Esempio di utilizzo per filtrare solo i file (escludendo le directory):
import java.io.File;
import java.io.FileFilter;
public class OnlyFilesFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Directory corrente
// Creiamo un FileFilter per accettare solo i file
FileFilter onlyFilesFilter = new FileFilter() {
@Override
public boolean accept(File pathname) {
return pathname.isFile(); // Restituisce true se è un file
}
};
// Usare il filtro per ottenere la lista dei file
File[] fichiers = dir.listFiles(onlyFilesFilter);
if (fichiers != null) {
for (File fichier : fichiers) {
System.out.println(fichier.getName());
}
}
}
}
Utilizzo di espressioni lambda (disponibile da Java 8, poiché FileFilter è un'interfaccia funzionale):
import java.io.File;
import java.io.FileFilter;
public class LambdaFileFilterExample {
public static void main(String[] args) {
File dir = new File("."); // Directory corrente
// Usare un'espressione lambda come FileFilter
File[] directories = dir.listFiles(pathname -> pathname.isDirectory()); // Filtro per directory
if (directories != null) {
for (File directory : directories) {
System.out.println(directory.getName());
}
}
}
}
FileFilter permette di creare criteri di filtraggio riutilizzabili per lavorare con il file system.