In Java 8 and higher, you can use the Files.walk() method from Java NIO API to iterate through all files and sub-directories in a particular directory as shown below:

try (Stream<Path> files = Files.walk(Paths.get("dir"))) {

    // traverse all files and sub-folders
    files.map(Path::toAbsolutePath)
            .forEach(System.out::println);

} catch (IOException ex) {
    ex.printStackTrace();
}

In Java 7 or below, you can write a recursive function to traverse all files and folders in a given directory:

public static void traverseDir(File dir) {
    File[] files = dir.listFiles();
    if(files != null) {
        for (final File file : files) {
            traverseDir(file);
        }
    }
    System.out.println(dir.getAbsoluteFile());
}

Now you can call the above method to traverse a directory:

File dir = new File("dir");
traverseDir(dir);

Further Reading

You may be interested in other Java I/O articles:

✌️ Like this article? Follow me on Twitter and LinkedIn. You can also subscribe to RSS Feed.