所以我有这个 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 如何使用它们的文件路径(\或/)无关,因为除了显示它位于我项目的根目录之外,我并没有真正指定它。
那么在这种情况下可能是什么情况呢?
最佳答案
Windows 注意到打开的文件句柄并拒绝删除打开的文件。这是 Windows 中的策略。打开的文件不会消失。持有打开文件句柄的进程可以相信文件会保留。
Linux 有不同的策略。一个文件可以从所有目录中删除(是的,当它被硬链接(hard link)时它可以在多个目录中),即使一个进程仍然有一个打开的句柄。文件本身不会从磁盘中删除。使用打开句柄的进程仍然可以处理文件,使其增长、收缩、写入、读取。但在句柄关闭后,文件会被文件系统自动删除。
您使用的操作系统的这些不同政策是您观察的原因。
关于java - 文件在 Linux 上被删除但在 Windows 上没有,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23679970/