[英]How to write lines to a file, and each line is a atomic operation?
我想向文件中写一些行,并且我需要写的每一行都是一个原子操作。
例如,我有3行:
111111111111111111111111
222222222222222222222222
333333333333333333333333
当我将它们逐行写入文件时,程序可能会错误退出,因此保存的数据可能是:
11111111111111111111111
222222
这不是我所期望的。 我希望每一行都是一个交易,一个原子操作。
我应该怎么做?
目前,我使用Java来做到这一点。
如果您确实需要以原子方式将新行写入文件,我想唯一的方法是使用新名称创建一个副本,编写新行并将新文件重命名为原始名称。 至少在POSIX下,重命名操作是原子的。 在Windows上,您需要在重命名之前删除原始文件,这会带来一个问题,如果在该过程中出现问题,将无法还原该文件。
您可以按照@aix的建议使用冲洗/同步。 否则(更好的是-可靠性达到99.999%)是使用某种包含事务支持的环境(例如数据库)并使用commit
。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.