File.delete() 仅随机删除目标文件
File.delete() deleting target file only at random times
我试图删除文件夹中的文件和文件夹本身,但它只会随机删除文件夹。为什么会这样?
如果我一直按删除按钮,它最终会被删除。
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.
此类行为的最常见原因是流泄漏。例如,如果您使用 FileOutputStream 编写一个文件,但您没有关闭它,那么当它的引用被垃圾收集时,它最终将被关闭。
检查(如果您使用输入流或输出流打开文件)流是否始终关闭。
我建议改用 Files.delete(Path)。此方法会抛出一个 IOException,这样您就可以了解删除失败的原因,而不仅仅是返回一个无用的布尔值。
https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#delete(java.nio.file.Path)
您可以通过 File.toPath() 获取文件的路径(因此,'Path p = dlt.toPath()')。
只需捕获并记录异常即可查看删除失败的原因
我试图删除文件夹中的文件和文件夹本身,但它只会随机删除文件夹。为什么会这样? 如果我一直按删除按钮,它最终会被删除。
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.
此类行为的最常见原因是流泄漏。例如,如果您使用 FileOutputStream 编写一个文件,但您没有关闭它,那么当它的引用被垃圾收集时,它最终将被关闭。
检查(如果您使用输入流或输出流打开文件)流是否始终关闭。
我建议改用 Files.delete(Path)。此方法会抛出一个 IOException,这样您就可以了解删除失败的原因,而不仅仅是返回一个无用的布尔值。 https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html#delete(java.nio.file.Path)
您可以通过 File.toPath() 获取文件的路径(因此,'Path p = dlt.toPath()')。
只需捕获并记录异常即可查看删除失败的原因