原子文件写入 *** 作(跨平台)

原子文件写入 *** 作(跨平台),第1张

原子文件写入 *** 作(跨平台)

AFAIK号

原因是要使这种原子 *** 作成为可能,必须以事务性文件系统的形式提供OS支持。主流 *** 作系统都没有提供事务性文件系统。

编辑
-至少对于符合POSIX的系统,我错了。

rename
如果@janneb指出,如果具有目标名称的文件已经存在,则POSIX系统调用将执行原子替换。这应该足以自动执行OP的 *** 作。

但是,事实仍然是, 不能

File.renameTo()
明确保证Java方法是原子方法,因此它不能为OP问题提供跨平台的解决方案。 __

编辑2- 使用Java 7,您可以将其

java.nio.file.Files.move(Path source, Path target,CopyOption...options)
与copyOptions和一起使用
ATOMIC_MOVE
。如果( *** 作系统/文件系统)不支持此功能,则应获取异常。



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

原文地址: http://outofmemory.cn/zaji/5673600.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2022-12-17
下一篇 2022-12-16

发表评论

登录后才能评论

评论列表(0条)

保存