文件在Linux上被删除但在Windows上没有

时间:2014-05-15 13:39:06

标签: java linux

所以我在Java中有这个程序,在那里我创建一个文件,写入并保存它。 但是在程序完成它的工作后,我希望它删除它创建的文件。

以下是我制作文件并将其删除的代码:

RandomAccessFile file = null;
file = new RandomAccessFile("myFile.zip", "rw");
file.write(buffer,0,read);
file.close();
File file = new File("myFile.zip");
file.delete();

它与Windows和Linux如何使用文件路径(\或/)无关,因为除了将其显示为项目的根目录之外,我没有真正指定它。

那么在这种情况下可能是什么情况呢?

1 个答案:

答案 0 :(得分:1)

Windows注意到打开的文件句柄并拒绝删除打开的文件。这是Windows中的一项政策。打开的文件不会消失。持有打开文件句柄的进程可以依赖文件保留。

Linux有不同的政策。可以从所有目录中删除一个文件(是的,当它是硬链接时,它可以在多个目录中删除),即使进程仍然有一个打开的句柄。然后,文件本身将不会从磁盘中删除。使用open句柄的进程仍然可以处理文件,使其增长,缩小,写入,从中读取。但是在句柄关闭后,文件系统会自动删除文件。

您正在使用的操作系统的这些不同政策是您观察的原因。