# How to traverse a directory structure in Java

By Atta Ur Rehman Shah (https://attacomsian.com/about). Published Dec 15, 2019. Topics: Java.
Canonical URL: https://attacomsian.com/blog/java-traverse-directory-structure

> A quick tutorial to learn how to iterate through all files and sub-directories in a directory using Java.

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:

```java
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:

```java
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:

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

## Further Reading

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

* [Reading and Writing Files in Java](https://attacomsian.com/blog/java-read-write-files)
* [How to Read and Write Text Files in Java](https://attacomsian.com/blog/java-read-write-text-files)
* [How to Read and Write Binary Files in Java](https://attacomsian.com/blog/java-read-write-binary-files)
* [Reading and Writing Files using Java NIO API](https://attacomsian.com/blog/java-read-write-files-nio-api)
* [How to read a file line by line in Java](https://attacomsian.com/blog/how-to-read-a-file-line-by-line-in-java)
