Skip to content
Advertisement

How do I iterate through the files in a directory and it’s sub-directories in Java?

I need to get a list of all the files in a directory, including files in all the sub-directories. What is the standard way to accomplish directory iteration with Java?

Advertisement

Answer

You can use File#isDirectory() to test if the given file (path) is a directory. If this is true, then you just call the same method again with its File#listFiles() outcome. This is called recursion.

Here’s a basic kickoff example:

JavaScript

Note that this is sensitive to StackOverflowError when the tree is deeper than the JVM’s stack can hold. If you’re already on Java 8 or newer, then you’d better use Files#walk() instead which utilizes tail recursion:

JavaScript
User contributions licensed under: CC BY-SA
6 People found this is helpful
Advertisement