Java Program to Delete Empty and Non-empty Directory

To understand this example, you should have the knowledge of the following Java programming topics:


Example 1: Java Program to delete an empty directory

import java.io.File;

class Main {
  public static void main(String[] args) {

    try {
      // create a new file object
      File directory = new File("Directory");

      // delete the directory
      boolean result = directory.delete();

      if(result) {
        System.out.println("Directory Deleted");
      }
      else {
        System.out.println("Directory not Found");
      }

    } catch (Exception e) {
      e.getStackTrace();
    }
  }
}

In the above example, we have used the delete() method of the File class to delete the directory named Directory.

Here, if the directory is present, then the message Directory Deleted is shown. Otherwise, Directory not Found is shown.


Example 2: Delete a non-empty directory

In Java, to delete a non-empty directory, we must first delete all the files present in the directory. Then, we can delete the directory.

import java.io.File;

class Main {
  public static void main(String[] args) {

    try {
      // create a new file object
      File directory = new File("Directory");

      // list all the files in an array
      File[] files = directory.listFiles();

      // delete each file from the directory
      for(File file : files) {
        System.out.println(file + " deleted.");
        file.delete();
      }

      // delete the directory
      if(directory.delete()) {
        System.out.println("Directory Deleted");
      }
      else {
        System.out.println("Directory not Found");
      }

    } catch (Exception e) {
      e.getStackTrace();
    }
  }
}

In the above example, we have used the for-each loop to delete all the files present in the directory. Once, all files are deleted, we used the delete() method to delete the directory.


Example 3: Delete non-empty directory recursively

import java.io.File;

class Main {

  public static void deleteDirectory(File directory) {

    // if the file is directory or not
    if(directory.isDirectory()) {
      File[] files = directory.listFiles();

      // if the directory contains any file
      if(files != null) {
        for(File file : files) {

          // recursive call if the subdirectory is non-empty
          deleteDirectory(file);
        }
      }
    }

    if(directory.delete()) {
      System.out.println(directory + " is deleted");
    }
    else {
      System.out.println("Directory not deleted");
    }
  }
  public static void main(String[] args) {

    try {
      // create a new file object
      File directory = new File("Directory");

      Main.deleteDirectory(directory);

    } catch (Exception e) {
      e.getStackTrace();
    }
  }
}

Here, suppose we have a non-empty directory named Directory. The Directory contains 2 files named file1.txt and file2.txt and a non-empty subdirectory named Subdirectory. Again, the Subdirectory contains a file named file11.txt.

Now, when we run the program, we will get the following output.

Directory\file1.txt is deleted
Directory\file2.txt is deleted
Directory\Subdirectory\file11.txt is deleted
Directory\Subdirectory is deleted
Directory is deleted

Here, first 2 files are deleted, then the recursive function delete the files inside the Subdirectory. Once, the Subdirectory is empty, it is deleted. And, finally the Directory is deleted.

Did you find this article helpful?