在Linux上的Java写文件被删除,但我仍然可以写入它

在Linux上的Java写文件被删除,但我仍然可以写入它,第1张

概述在Linux上的Java写文件删除,但我仍然可以写入

我有一个将文件写入磁盘的Java应用程序。 问题是,linux不像windows那样locking文件,所以有人可以在写入文件时删除文件。 当发生这种情况时,我的Java应用程序保持一致,就像文件仍然存在…甚至允许更多的写入,没有例外。

我添加了一个检查:file.exists(),但是这会使我的性能下降近50%。 任何人有什么聪明的想法,我可以如何解决这个问题,并保持我的performance高?

Apache上的httpS; 它会减慢Apache吗?

使用wevtutil安装WPT清单时出现问题

如何准备一个持续的基准环境

Eclipse的makefile生成缓慢…什么给了?

监视windows移动设备上每个线程的cpu使用情况

unix下的“文件”是一个未命名的i节点(其中包含数据)和一个指向该i节点的目录中的零+条目。 零或更多。 这意味着您可以删除名称,但是i节点仍然存在,如果打开,可以写入并从中读取。

但是在每次写入时你都不需要检查f.exists()。 偶尔做一次(比如15秒一次)。 你的表现不会伤害太多。

听说这被认为是一个“问题”,这很有趣 – 我们这些在UNIX上斩钉截铁的人认为windows的文件锁定方法是粗糙和痛苦的。

如果你不能使用文件权限来(主要是)防止这种情况,我认为file.exists()是唯一的解决方案,但是如果它导致性能问题,你可能会调用它不太频繁 – 也许从“收割者”线程,偶尔醒来检查这种情况。

如果你不介意减少你的程序的可移植性,你可以使用jnotify之类的东西在文件被删除时得到通知。

我相信,这个功能将成为JDK 7的一部分,这意味着您稍后可以在以后删除对jnotify的依赖。

考虑使用临时名称来写入文件,写入完成后,将文件重命名/移动到最终的名称/位置。

总结

以上是内存溢出为你收集整理的在Linux上的Java写文件被删除,但我仍然可以写入它全部内容,希望文章能够帮你解决在Linux上的Java写文件被删除,但我仍然可以写入它所遇到的程序开发问题。

如果觉得内存溢出网站内容还不错,欢迎将内存溢出网站推荐给程序员好友。

欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/langs/1154708.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2022-06-01
下一篇2022-06-01

发表评论

登录后才能评论

评论列表(0条)

    保存