Java教程

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

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

在这个例子中,我们将学习在Java中删除一个空目录、一个非空目录和一个带有非空子目录的目录。
要理解此示例,您应该了解以下Java 编程主题:
Java 文件类 Java 递归

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

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();
    }
  }
}
在上面的例子中,我们使用了 File类的 delete()方法来删除名为Directory的目录。
此处,如果目录存在,则会显示消息目录已删除。否则,将显示未找到目录。

示例 2: 删除一个非空目录

在 Java 中,要删除一个非空目录,我们必须首先删除该目录中存在的所有文件。然后,我们可以删除目录。
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();
    }
  }
}
在上面的例子中,我们使用了 for-each 循环来删除目录中存在的所有文件。一旦删除所有文件,我们使用 delete()方法删除目录。

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

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();
    }
  }
}
这里,假设我们有一个名为 Directory 的非空目录。 Directory 包含 2 个名为 file1.txtfile2.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 为空,它就会被删除。最后, Directory 被删除。
昵称: 邮箱:
Copyright © 2022 立地货 All Rights Reserved.
备案号:京ICP备14037608号-4