无法使用Java删除Linux中的隐藏文件

时间:2014-11-03 00:36:46

标签: java linux hidden-files

环境:

  • 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

2 个答案:

答案 0 :(得分:2)

以下其中一项可能是您的问题:

  • 你在正确的目录中删除?我注意到你没有指定绝对路径,而是指出一条相对路径并不意味着你有意指定相对路径。您可能正在删除其他目录中的内容。
  • 关闭文件F,您将手柄处于打开状态,我不确定后果。
  • 你如何验证"它还在那里"? ls而不是catnano或其他什么?

等调试:

  • 确实打开RF物质? (它不应该)。
  • 它是一个隐藏文件真的很重要吗?您实际删除哪个文件?
  • 这是否发生在不同的目录中?
  • 如果您使用chmod锁定对相关文件的读/写访问权限,是否会发生这种情况?如果阻止读取失败的内容,如果阻止写入失败的内容?我强烈怀疑这会澄清你的问题。

答案 1 :(得分:1)

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