【发布时间】:2019-05-08 07:32:58
【问题描述】:
我正在尝试删除文件夹中的文件和文件夹本身,但它只会随机删除文件夹。为什么会这样? 如果我继续捣碎删除按钮,它最终会被删除。
private void deleteCourseButtonMouseClicked(java.awt.event.MouseEvent evt) {
File dltcycle = new File(C.viewcoursedirectory);
System.out.println(dltcycle.getAbsolutePath());
String[] cycle = dltcycle.list();
for (int i = 0; i < cycle.length; i++) {
File dlt = new File(C.viewcoursedirectory + "\\" + cycle[i]);
System.out.println(C.viewcoursedirectory + "\\" + cycle[i]);
System.out.println(dlt.getAbsolutePath());
dlt.delete();
}
dltcycle.delete();
}
预期结果是目录中的文件夹被一致删除。 不是在捣碎删除按钮后的随机时间。如果代码块看起来很难看,我很抱歉,我真的不知道如何格式化它。我不知道为什么“{”和“}”没有出现在代码块中:X。
【问题讨论】:
-
你只能用
File#delete删除一个空目录。此外,您应该检查File#delete的返回值(一个指示是否成功删除的布尔值)。另外,一个很好的库来简化文件操作:commons.apache.org/proper/commons-io/javadocs/api-2.5/org/… -
我这样做是为了在删除文件夹之前删除文件夹的内容。但即便如此,它也只是有时有效。令人费解的是,它只是有时有效,而不是一直失败。
-
你应该检查
delete返回的布尔值:如果false,删除没有成功(是的,我知道这很糟糕,它应该抛出异常......) -
您可以同时使用 file.delete() 和 file.deleteOnExit()。