Mattepuffo.com
Listare file e directory in Java
Dettagli- Dettagli
- Categoria principale: Programmazione & Co.
- Ultima modifica il Venerdì, 01 Giugno 2012 18:20
- Pubblicato Sabato, 19 Marzo 2011 18:55
Vi posto una semplice classe che permette di listare file e directory in maniera ricorsiva di una cartella che decidete voi.
Nello specifico il programma è per console, ma è facilmente espandibile per un'applicazione grafica.
In avvio di programma vi viene chiesto quale directory volete listare.
Dopo di che partono i vari metodi:
- sortList
- validateDir
- listingDir
Il metodo centrale è sortList che prima lancia validateDir per validare la directory, e poi costruisce la stringa con listingDir.
Vediamo il tutto:
Nel metodo main usiamo questa riga
BufferedReader br = new BufferedReader(new InputStreamReader(System.in));
per far scrivere il path all'utente (attraverso System.in).
Poi viene lanciato sortList che ritorna uno StringBuilder:
StringBuilder lista = sortList(dir);
passandolgi dir come argomento.
Prima viene lanciato validateDir per controllare la validità della directory, poi viene istanziato uno StringBuilder che viene costruito tramite validateDir:
Questo metodo accetta tra parametri: un File per directory da listare, un int per controllare i vari livelli delle sottodirectory e uno StringBuilder per costruire l'output.
Ho usato uno SringBuilder in quanto al contrario di String è possibile costruirlo dinamicamente; non è statico insomma.
La stringa spazio server per distinguire tra i file e le directory in modo da capire quale è una dir e quali file dentro le dir.
L'array di File è costruito attraverso il metodo listFiles che ritorna un arry di path dei file e directory peresenti.
Attraverso questa riga ordiniamo l'array usando myComparator, del quale ho parlato in questo articolo:
Arrays.sort(elementi, new myComparator());
Nel ciclo foreach costruiamo l'output:
for (File files : elementi) {
sb.append(spazio).append(files.getName()).append("\n");
if (files.isDirectory()) {
listingDir(files, livello + 1, sb);
}
}
In pratica a sb aggiungiamo la stringa spazio più il nome del file e un \n per andare a capo.
Nell'if controlliamo se è un file o una directory, e in questo secondo caso rilanciamo il metodo aumentando il livello di uno (ricorsione).
Il risultato è più facile guardarlo che spiegarlo.
Ringrazio andbin del forum HTML.it per l'aiuto!


