1  import java.io.*;
  2  
  3  public class PrintVisitor implements FileSystemVisitor
  4  {
  5     public void visitFileNode(FileNode node)
  6     {
  7        for (int i = 0; i < level; i++) System.out.print(" ");
  8        System.out.println(node.getFile().getName());
  9     }
 10  
 11     public void visitDirectoryNode(DirectoryNode node)
 12     {
 13        for (int i = 0; i < level; i++) System.out.print(" ");
 14        System.out.println(node.getDirectory().getName());
 15        level++;
 16        for (FileSystemNode c : node.getChildren())
 17           c.accept(this);
 18        level--;
 19     }
 20  
 21     private int level = 0;
 22  }