package ch18io.directory; import java.nio.file.*; import java.io.IOException; public class ListDirectoryContents { public static void main(String[] args) { Path currentPath = Paths.get(System.getProperty("user.dir")); currentPath = currentPath.getParent(); // Get the entire directory contents filterDirectoryContents(currentPath, null); // Now try a filter for .txt files System.out.println("\nFilter for .txt:"); filterDirectoryContents(currentPath, "*.txt"); // Get files with a 3 character extension begiining with 'j' System.out.println("\nFilter for .j??:"); filterDirectoryContents(currentPath, "*.j??"); } // Filter the contents of a directory private static void filterDirectoryContents(Path path, String filter) { try (DirectoryStream<Path> paths = filter != null ? Files.newDirectoryStream(path, filter) : Files.newDirectoryStream(path)) { System.out.println("\n" + path + " directory contains:"); for (Path p : paths) { System.out.println(" " + p.getFileName() + (Files.isDirectory(p) ? " is a directory." : "")); } } catch (NotDirectoryException e) { System.err.println("Path is not a directory." + e); } catch (IOException e) { System.err.println("I/O error." + e); } } }