Problema

Dato un oggetto 'nodo' di classe File visualizza la lista dei nomi di file/cartelle contenuti nell'albero che ha radice in 'nodo', la lista è presentata con una riga per ogni nodo, la riga inizia con "file" o "cartella" a seconda del caso, seguita dal nome del nodo; le righe sono presentate in forma indentata: si parte da assenza di indentazione, si aumenta di un tab ("\t") per ogni livello, i nodi dello stesso livello hanno stesso livello di indentazione. Per ogni cartella si presentano prima tutti i file e poi le cartelle con gli eventuali contenuti.

Esempio di svolgimento

package testfile;

import java.io.File;

/**
 *
 * @author Gianni
 */
public class TestFile {

  /**
   * @param args the command line arguments
   */
  public static void main(String[] args) {
visita(new File(".")); } public static void visita(File f){ visita(f,0); } private static void visita(File f, int livello){ if (f.isFile()){ stampaNodo(f,livello,"file: "); } else { if (f.isDirectory()){ for (File figlio:f.listFiles()){ //tratta solo i file if (figlio.isFile()){ visita(figlio,livello+1); } } for (File figlio:f.listFiles()){ //tratta solo le cartelle if (figlio.isDirectory()){ visita(figlio,livello+1); } } stampaNodo(f,livello,"cartella: "); } } } private static void stampaNodo(File f, int livello, String msg){ for (int i = 0; i < livello; i++) { System.out.print("\t"); } System.out.println(msg+f.getName()); } }

Ultime modifiche: giovedì, 27 marzo 2014, 13:12