Home / Programmazione / Java / Listare i file di una directory con filtro in Java
Mattepuffo

Listare i file di una directory con filtro in Java

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!