我需要让我的程序创建一个具有特定名称的目录,并用该名称覆盖任何现有目录。目前,我的程序似乎无法覆盖目录。有没有办法强制覆盖?
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;
}
答案 0 :(得分:7)
如果目录存在,您首先要删除该目录,然后重新创建它。
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();
}
答案 1 :(得分:2)
您可以导入此库import org.apache.commons.io.FileUtils;
,然后您可以编写如下代码:
private boolean makeDirectory(){
File file = new File(TEMP_DIR_PATH + "/" + clipName);
boolean returnValue = false;
try {
FileUtils.forceMkdir(file);
returnValue = true;
} catch (IOException e) {
throw new RuntimeException(e);
}
return returnValue;
}
答案 2 :(得分:-2)
检查目录是否存在, 如果是,请删除该目录
创建目录