删除空目录和非空目录的 Java 程序
要理解此示例,您应该具备以下 Java 编程的知识:
- Java 文件类
- Java 递归
示例 1:Java 程序删除空目录
import java.io.File;
public 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("目录已删除");
}
else {
System.out.println("未找到目录");
}
} catch (Exception e) {
e.getStackTrace();
}
}
}
在上面的例子中,我们使用了 File
类的 delete()
方法来删除名为 Directory 的目录。
此处,如果目录存在,则会显示消息目录已删除。否则,将显示未找到目录。
示例 2:删除非空目录
在 Java 中,要删除非空目录,我们必须首先删除该目录中存在的所有文件。然后,我们可以删除目录。
import java.io.File;
public 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();
}
}
}
在上面的示例中,我们使用 for-each
循环删除了目录中存在的所有文件。所有文件都被删除后,我们用 delete()
方法删除目录。
示例 3:递归删除非空目录
import java.io.File;
public 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();
}
}
}
在这里,假设我们有一个名为 Directory
的非空目录. 这 Directory
包含 2 个文件 (file1.txt
和 file2.txt
) 和一个名为 Subdirectory
的非空子目录. 并且,该 Subdirectory
包含一个名为 file11.txt
的文件.
现在,当我们运行程序时,我们将得到以下输出。
Directory\file1.txt is deleted
Directory\file2.txt is deleted
Directory\Subdirectory\file11.txt is deleted
Directory\Subdirectory is deleted
Directory is deleted
这里先删除 2 个文件,然后递归函数删除 Subdirectory
里面的文件. 一旦 Subdirectory
为空,就可以被删除。而且,最后目录 Directory
被删除。