【问题标题】:Create directory. If exists, delete directory and its content and create new one in Java创建目录。如果存在,则删除目录及其内容并在 Java 中创建新目录
【发布时间】:2012-10-01 20:46:01
【问题描述】:

我正在尝试用 Java 创建一个目录。如果存在,我想删除该目录及其内容并创建一个新目录。我正在尝试执行以下操作,但该目录没有被删除。新文件将附加到目录中。

File file = new File("path");
boolean isDirectoryCreated = file.mkdir();
   if (isDirectoryCreated) {
       System.out.println("successfully made");
        } else {
          file.delete();
          file.mkdir();
          System.out.println("deleted and made");
          }

我在运行时在运行项目的目录中创建这个目录。每次运行后,必须删除旧内容,并在此目录中存在新内容。

【问题讨论】:

  • 如果目录不为空,则无法删除目录。递归深入目录以删除其中的所有文件..

标签: java directory


【解决方案1】:

感谢 Apache,这非常容易。

import java.io.File;
import java.io.IOException;

import org.apache.commons.io.FileUtils;

public class DeleteFolder {

    public static void main(String[] args){
        try {
            File f = new File("/var/www/html/testFolder1");
            FileUtils.cleanDirectory(f); //clean out directory (this is optional -- but good know)
            FileUtils.forceDelete(f); //delete directory
            FileUtils.forceMkdir(f); //create directory
        } catch (IOException e) {
            e.printStackTrace();
        } 
    }

}

【讨论】:

    【解决方案2】:
    public static boolean deleteDir(File dir) {
        if (dir.isDirectory()) {
            String[] children = dir.list();
            for (int i=0; i<children.length; i++) {
                boolean success = deleteDir(new File(dir, children[i]));
                if (!success) {
                    return false;
                }
            }
        }
        return dir.delete();
    }
    

    【讨论】:

      【解决方案3】:

      你需要先删除目录的内容,然后才能删除目录。你可以试试这样:-

      File file = new File("path");
      boolean isDirectoryCreated = file.mkdir();
      
      if (isDirectoryCreated) {
             System.out.println("successfully made");
      
      } else {
             deleteDir(file);  // Invoke recursive method
             file.mkdir();       
      }
      
      
      public void deleteDir(File dir) {
          File[] files = dir.listFiles();
      
          for (File myFile: files) {
              if (myFile.isDirectory()) {  
                  deleteDir(myFile);
              } 
              myFile.delete();
      
          }
      }
      

      【讨论】:

        猜你喜欢
        • 2018-08-01
        • 2017-01-01
        • 1970-01-01
        • 2015-05-10
        • 2014-05-19
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多