Loop Through a Given Directory With Indentation in Java

The code below provide a method for recursively loop through a directory in Java. It also prints out the directory hierarchy with indentation.

package com.programcreek;
 
import java.io.File;
import org.apache.commons.lang3.StringUtils;
 
public class LoopThroughADirectory {
 
	public static void main(String[] args) {
	    File[] files = new File("/home/programcreek/Desktop").listFiles();
	    showFiles(files);
	}
 
	public static void showFiles(File[] files) {
	    for (File file : files) {
	        if (file.isDirectory()) {
	        	printIndent(StringUtils.countMatches(file.getAbsolutePath(), "/")-3);
	            System.out.println("Directory: " + file.getName());
	            showFiles(file.listFiles()); // recursively call itself
	        } else {
	        	printIndent(StringUtils.countMatches(file.getAbsolutePath(), "/")-3);
	            System.out.println("File: " + file.getName());
	        }
	    }
	}
 
 
	public static void printIndent(int count){
		for(int i=0; i<count; i++){
			System.out.print("-----");
		}
	}
}

Output:

-----Directory: log4j
----------File: log.out
----------File: filec.out
----------File: fileb.out
----------File: filea.out
-----File: file1
-----File: file2
Category >> I/O  
If you want someone to read your code, please put the code inside <pre><code> and </code></pre> tags. For example:
<pre><code> 
String foo = "bar";
</code></pre>

Leave a comment

*