跳到主要内容

Java 程序:删除空和非空目录

要理解这个示例,你需要了解以下 Java 编程 主题:

示例 1:Java 程序删除空目录

import java.io.File;

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

try {
// 创建一个新文件对象
File directory = new File("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;

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

try {
// 创建一个新文件对象
File directory = new File("Directory");

// 列出数组中的所有文件
File[] files = directory.listFiles();

// 从目录中删除每个文件
for(File file : files) {
System.out.println(file + " 已删除。");
file.delete();
}

// 删除目录
if(directory.delete()) {
System.out.println("目录已删除");
}
else {
System.out.println("未找到目录");
}

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

在上面的示例中,我们使用 for-each 循环删除目录中的所有文件。所有文件被删除后,我们使用 delete() 方法删除目录。

示例 3:递归删除非空目录

import java.io.File;

class Main {

public static void deleteDirectory(File directory) {

// 判断文件是否为目录
if(directory.isDirectory()) {
File[] files = directory.listFiles();

// 如果目录包含任何文件
if(files != null) {
for(File file : files) {

// 如果子目录非空,递归调用
deleteDirectory(file);
}
}
}

if(directory.delete()) {
System.out.println(directory + " 已删除");
}
else {
System.out.println("目录未删除");
}
}
public static void main(String[] args) {

try {
// 创建一个新文件对象
File directory = new File("Directory");

Main.deleteDirectory(directory);

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

这里,假设我们有一个名为 Directory 的非空目录。Directory 包含名为 file1.txtfile2.txt 的两个文件以及一个非空子目录名为 SubdirectorySubdirectory 中包含一个名为 file11.txt 的文件。

现在,当我们运行程序时,我们将得到以下输出。

Directory\file1.txt 已删除
Directory\file2.txt 已删除
Directory\Subdirectory\file11.txt 已删除
Directory\Subdirectory 已删除
Directory 已删除

这里,首先删除了 2 个文件,然后递归函数删除了 Subdirectory 中的文件。一旦 Subdirectory 为空,它就被删除。最后,Directory 被删除。