如何在Java中以原子方式替换另一个目录?

Jea*_*let 5 java directory file atomic

我有一个目录,其中包含提供给客户的数据文件,比如说/srv/data.在进行一系列更新时,我正在努力/srv/data_tmp,并且在操作结束时,我想原子地替换datadata_tmp.File.renameTo()当目标是现有目录时,总是为我返回false.我怎样才能做到这一点?

p.m*_*ino 1

恐怕你不能。至少不是SO级别。因此,即使您在 java 应用程序的上下文中管理“原子性”,也无法保证其他“流氓”进程会干扰实际的文件系统级别。

如果我是你,我会阅读这篇文章(很旧,但应该给你一些想法),然后看看你是否可以将建议的方法移植到更现代的版本

哦,等等,已经有人这么做

显然你也不是第一个在这里问这个问题的

祝你好运...