!7 import java.nio.file.*; import java.nio.file.attribute.*; p { final Path mainPath = FileSystems.getDefault().getPath(userHome()); Files.walkFileTree(mainPath, new SimpleFileVisitor() { @Override public FileVisitResult preVisitDirectory(Path dir, BasicFileAttributes attrs) throws IOException { print("Dir: " + dir); return eq(dir, mainPath) ? FileVisitResult.CONTINUE : FileVisitResult.SKIP_SUBTREE; } @Override public FileVisitResult visitFile(Path file, BasicFileAttributes attrs) throws IOException { // here you have the files to process bool dir = attrs.isDirectory(); // always false I guess bool sym = attrs.isSymbolicLink(); print((sym ? "SYMLINK: " : dir ? "DIR: " : "FILE: ") + file); return sym || dir ? FileVisitResult.SKIP_SUBTREE : FileVisitResult.CONTINUE; } @Override public FileVisitResult visitFileFailed(Path file, IOException exc) throws IOException { print("OOPS: " + file); return FileVisitResult.CONTINUE; } }); }