file.delete() 即使文件可写也返回 false

file.delete() returning false even file is writable

我正在尝试将文件复制到目录然后将其删除,但 file.delete() 一直返回 false

这是我的代码:

for (File file : list) {
            if (!file.isDirectory()) {
                try {
                    FileUtils.copyFileToDirectory(file, path);
                    file.setWritable(true);                         
                    System.out.println(file.delete());
                    if(file.exists()){
                        file.deleteOnExit();
                    }
                } catch (IOException e) {
                    System.out.println(e);
                }
            }
        }

您可以解决的想法很少。

  • 如果要删除文件,请先关闭所有连接和流。之后删除文件
  • 确保您拥有文件的删除权限
  • 确保您在正确的目录中。尝试使用绝对路径删除文件,以防删除不起作用。该文件的路径可能不正确。
  • 使用Files.delete。 delete(Path) 方法删除文件,如果删除失败则抛出异常。例如,如果文件不存在,则抛出 NoSuchFileException。您可以捕获异常以确定删除失败的原因,如下所示:请参阅 Oracle 文档 here

    try {
        Files.delete(path);
    } catch (NoSuchFileException x) {
        System.err.format("%s: no such" + " file or directory%n", path);
    } catch (DirectoryNotEmptyException x) {
        System.err.format("%s not empty%n", path);
    } catch (IOException x) {
        // File permission problems are caught here.
        System.err.println(x);
    }