Java program to List all files in a directory and nested sub-directory - Recursive approach

To list all files in a directory and nested sub-directory, the Java program is as follows −


public class Demo{
   static void print_recursively(File[] my_arr,int my_index,int sub_level){
      if(my_index == my_arr.length)
      for (int i = 0; i < sub_level; i++)
      else if(my_arr[my_index].isDirectory()){
         System.out.println("[" + my_arr[my_index].getName() + "]");
         print_recursively(my_arr[my_index].listFiles(), 0, sub_level + 1);
      print_recursively(my_arr,++my_index, sub_level);
   public static void main(String[] args){
      String path_main = "path to folder that contains files";
      File main_dir = new File(path_main);
      if(main_dir.exists() && main_dir.isDirectory()){
         File my_arr[] = main_dir.listFiles();
         System.out.println("Files listed from the main directory are : " + main_dir);


Inside the directory path, all the files of all formats from the path will be listed

A class named Demo contains a function named ‘print_recursively’ that takes the array and the index value, and nested levels as parameters, and iterates through the files and returns the list of all files in that specific directory.

In the main function, the path to the folder with all the files is defined and a new file path is also created. The ‘listFiles’ function is used to list all the files in that specific folder. Next, the function is called by passing these parameters. Result is displayed on the console.