1

环境:

  • Linux Ubuntu 14.04LTS
  • Java 1.7

当前代码:

String fileName = ".fileName";
            try {
                java.io.File F = new java.io.File(fileName);
                java.io.RandomAccessFile RF = new java.io.RandomAccessFile(F,"rwd");
                RF.close();
                boolean deleted = F.delete();                   
                System.out.println("File was deleted: " + deleted);
            } catch (FileNotFoundException e1) {
                System.out.println("Unable to access file: " + e1.getMessage());
            }

文件仍然存在,但删除是真的,没有FileNotFoundException被抓住。

4

2 回答 2

2

以下之一可能是您的问题:

  • 您是否在正确的目录中删除?我注意到您指定的不是绝对路径,而是相对路径,这并不意味着您故意指定相对路径。您可能正在删除另一个目录中的某些内容。
  • 关闭文件F,您将打开手柄,我不确定后果。
  • 您如何验证“它仍然存在”?ls而不是catnano什么都对?

和其他调试:

  • 打开射频重要吗?(不应该)。
  • 它是一个隐藏文件真的很重要吗?您实际上要删除什么文件?
  • 这会发生在不同的目录中吗?
  • 如果您使用 锁定对相关文件的读/写访问权限,会发生这种情况chmod吗?如果你阻止读取失败,如果你阻止写入失败?我强烈怀疑这将阐明您的问题。
于 2014-11-03T01:01:28.277 回答
1

我知道这是一个旧线程,但这可能对其他人有用,因为没有人指出这一点。catch 块正在捕获永远不会抛出的异常。如果您想知道文件是否存在然后被删除,请使用 java.nio.Files.delete(Path)。如果文件不存在,它将抛出 FileNotFoundException。检查javadocs,这都详细说明了。

于 2015-06-19T13:23:30.413 回答