所以我在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如何使用文件路径(\或/)无关,因为除了将其显示为项目的根目录之外,我没有真正指定它。
那么在这种情况下可能是什么情况呢?
答案 0 :(得分:1)
Windows注意到打开的文件句柄并拒绝删除打开的文件。这是Windows中的一项政策。打开的文件不会消失。持有打开文件句柄的进程可以依赖文件保留。
Linux有不同的政策。可以从所有目录中删除一个文件(是的,当它是硬链接时,它可以在多个目录中删除),即使进程仍然有一个打开的句柄。然后,文件本身将不会从磁盘中删除。使用open句柄的进程仍然可以处理文件,使其增长,缩小,写入,从中读取。但是在句柄关闭后,文件系统会自动删除文件。
您正在使用的操作系统的这些不同政策是您观察的原因。