加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 编程开发 > Java > 正文

java – 如何强制mkdir覆盖现有目录?

发布时间:2020-12-15 04:23:02 所属栏目:Java 来源:网络整理
导读:我需要让我的程序创建一个具有特定名称的目录,并用该名称覆盖任何现有目录.目前,我的程序似乎无法覆盖目录.有没有办法强制覆盖? private boolean makeDirectory(){ File file = new File(TEMP_DIR_PATH + "/" + clipName); if (file.mkdir()) { return true
我需要让我的程序创建一个具有特定名称的目录,并用该名称覆盖任何现有目录.目前,我的程序似乎无法覆盖目录.有没有办法强制覆盖?

private boolean makeDirectory(){
    File file = new File(TEMP_DIR_PATH + "/" + clipName);
    if (file.mkdir()) {
        return true;
    }
    else {
        System.err.println("Failed to create directory!");
        return false;
    }
}

编辑:
现在我正在尝试以下操作,但程序没有检测到目录存在,即使它确实存在.

private boolean makeDirectory(String path){
    File file = new File(path);
    if (file.exists()) {
        System.out.println("exists");
        if (file.delete()) {
            System.out.println("deleted");
        }
    }
    if (file.mkdir()) {
        return true;
    }
    else {
        System.err.println("Failed to create directory!");
        return false;
    }
}

解决:
(如果将来有人需要知道…)
我最终这样做了:

private boolean makeDirectory(String path){
    if (Files.exists(Paths.get(path))) {
        try {
            FileUtils.deleteDirectory(new File(path));
        }
        catch (IOException ex) {
            System.err.println("Failed to create directory!");
            return false;
        }
    }    
    if (new File(path).mkdir()) {
        return true;
    }
    return false;
}

解决方法

如果目录存在,您首先要删除该目录,然后重新创建它.

Using java.nio.file.Files

if (Files.exists(path)) {
    new File("/dir/path").delete();
} 

new File("/dir/path").mkdir();

如果你有FileUtils,this可能更好,因为它避免实际删除你想要在那里的目录:

import org.apache.commons.io.FileUtils

if (Files.exists(path)) {
    FileUtils.cleanDirectory( new File("/dir/path"));
} else {
    new File("/dir/path").mkdir();
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读