Home >Java >javaTutorial >How to Recursively Iterate Through Files and Subdirectories in Java?

How to Recursively Iterate Through Files and Subdirectories in Java?

Linda Hamilton
Linda HamiltonOriginal
2024-12-09 05:45:11519browse

How to Recursively Iterate Through Files and Subdirectories in Java?

How to Iterate Through Files in Directories and Subdirectories Using Java

To obtain a comprehensive list of files, including those within subdirectories, Java provides a straightforward solution. By leveraging recursion, it's possible to navigate the file system effectively.

Recursive Approach

Utilize File#isDirectory() to determine whether a file represents a directory. If true, repeat the process with the outcome of File#listFiles(). This is known as recursion.

Here's an example implementation:

public static void showFiles(File[] files) {
    for (File file : files) {
        if (file.isDirectory()) {
            System.out.println("Directory: " + file.getAbsolutePath());
            showFiles(file.listFiles()); // Recursive call
        } else {
            System.out.println("File: " + file.getAbsolutePath());
        }
    }
}

Java 8's Files#walk

For Java 8 and above, Files#walk() offers a convenient alternative that employs tail recursion:

Files.walk(dir).forEach(path -> showFile(path.toFile()));

This safely handles deep hierarchies, avoiding potential StackOverflowError due to excessive recursion.

The above is the detailed content of How to Recursively Iterate Through Files and Subdirectories in Java?. For more information, please follow other related articles on the PHP Chinese website!

Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn