gpt4 book ai didi

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

转载 作者:太空宇宙 更新时间:2023-11-04 11:09:54 24 4
gpt4 key购买 nike

所以我有这个 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com