首页 > 解决方案 > 尝试使用 file.delete() 时不会删除文件

问题描述

我试图从我的目录中删除所有文件(不删除目录本身),我在stackoverflow上环顾四周,我发现的解决方案都没有奏效,我自己的代码也没有。它似乎删除了一些文件,但对于其他文件却没有,我不明白为什么。文件 dewi1、dewi2、dewi3 等都是彼此的副本,但已重命名,运行此代码时,这些文件均未打开或使用。

    File directory = new File("C:/Users/TUDelftSID/Downloads/Primal-PvM/Primal-PvM/pox/data/logs/Packetlogs");
    File[] allFilesInDir = directory.listFiles();

    for (int K = 0; K < allFilesInDir.length; K++) {
        if (allFilesInDir[K].delete()) {
            System.out.println("Succesfully Deleted: " + allFilesInDir[K] + " !");
        } else {
            System.out.println("Failed to delete " + allFilesInDir[K] + " !");
        }
    } 

这是我使用的,据我所知,文件应该全部删除;然而,这就是结果。在此处输入图像描述

为什么会这样?

我也已经试过了:

for(File file: directory.listFiles()) 
if (!file.isDirectory()) 
    file.delete();

和这个:

Arrays.stream(directory).listFiles()).forEach(File::delete);

两者都不起作用:/,如何解决这个问题?

标签: javafiledelete-file

解决方案


Gerben - 我认为您的代码没有任何问题。

JavaDoc 推荐这个 -

public boolean delete() 删除此抽象路径名表示的文件或目录。如果此路径名表示一个目录,则该目录必须为空才能被删除。请注意,Files 类定义了 delete 方法以在无法删除文件时抛出 IOException。这对于错误报告和诊断无法删除文件的原因很有用。

尝试使用https://docs.oracle.com/javase/7/docs/api/java/nio/file/Files.html 并查看是否收到任何 IOException。


推荐阅读