Innanzitutto nessuno ti vieta di avere quel/i metodo/i di scansione del file-system come "privati" e fare in modo che il metodo ricorsivo riceva anche un StringBuffer o StringBuilder così da appendere facilmente un nome di file "indentato" (con spazi proporzionali al "livello" di annidamento). E il metodo ricorsivo non dovrebbe più restituire qualcosa.Originariamente inviato da fermat
ma il problema è che listDir ritorna una List<File>.