Basic attributes

Start at the root; list all files; watch out for links
import java.nio.filesystems.*;
import java.io.*;

public class FileSystemLister {

  public static void main(String[] args) throws IOException {

    File[] roots = File.listRoots();
    for (int i = 0; i < roots.length; i++) {
       FileReference ref = roots[i].toFileReference();
       Directory root = ref.openDirectory();
       list(root);
    }

  }

  public static void list(Directory dir) {
    try {
      for (Directory.Entry entry : dir) {
         FileReference ref = entry.asFileReference();
         System.out.println(entry.getName());

         // Now let's see what it is:
         BasicFileAttributes atts = ref.readBasicFileAttributes();
         BasicFileType = atts.getFileType(); 
         if (type == BasicFileType.LINK) continue;
         else if (type == BasicFileType.DIRECTORY) {
           Directory child = ref.openDirectory();
           list(child);
         }
      }
    } 
    finally {
      dir.close();
    }
  }
  
}