Listare i file di una directory con filtro in Java
Come possiamo listare tutti i file di una directory, in Java, selezionando solo quelli con una determinata estensione?
La risposta è abbastanza semplice: usando il metodo list di File, e impostando un filtro con FilenameFilter.
Vi mostro due esempi: uno "vecchio stile" ed uno usando le lambda expression (richiede Java 8).
Ecco il primo:
public class Main {
public static void main(String[] args) {
File dir = new File("/home/utente);
String[] files = dir.list(new FilenameFilter() {
@Override
public boolean accept(File file, String name) {
return name.toLowerCase().endsWith(".txt");
}
});
for (String s : files) {
System.out.println(s);
}
}
}
Impostiamo la directory e poi applichiamo il metodo list.
A questo passiamo un FilenameFilter, e facciamo l'override del metodo accept, andando a controllare che il nome del file finisca con .txt.
Questo il secondo esempio:
public class Main {
public static void main(String[] args) {
File dir = new File("/home/utente");
String[] files = dir.list((File file, String name) -> name.toLowerCase().endsWith(".txt"));
for (String s : files) {
System.out.println(s);
}
}
}
Molto più compatto, ma il risultato è lo stesso.
In entrambi i casi non ho fatto un controllo sull'esistenza della directory in cui cercare; e non ho nemmeno considerato eventuali sottodirectori.
Ma non era lo scopo dell'articolo.
Enjoy!
java file list filenamefilter
Commentami!