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()')。

只需捕获并记录异常即可查看删除失败的原因