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

📅  最后修改于: 2020-09-26 18:17:50             🧑  作者: Mango

在此示例中,我们将学习在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的非空目录。该目录包含2个文件名为FILE1.TXTFILE2.TXT和命名的子目录非空的子目录。同样, 子目录包含一个名为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内的文件。 子目录为空后,将其删除。并且,最后目录被删除。