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.