Home >Java >javaTutorial >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!