在OS级别的一个原子操作中创建和写入文件

时间:2012-11-27 14:39:03

标签: java file io atomic

所以我需要创建一个文件,然后写一行,这必须是原子的。因此,在初始化时,没有其他进程可以修改文件。
我有一个想法,在锁定时锁定不同的东西,然后执行操作然后释放锁定以让另一方进入。但这非常繁琐,也可能是错误的,因为创建锁定并获取它可能是不是原子的(我猜)。没别的办法吗?

2 个答案:

答案 0 :(得分:3)

我建议您编写临时文件,然后重命名为您的文件。我不确定这个操作是否在java中实现为所有操作系统的原子,但至少在Unix上你有机会,因为我认为它使用与mv相同的原子调用。

我想,它在Windows上不会是真正的原子。对于大多数应用来说,它几乎是“原子的”。

答案 1 :(得分:0)

如果你想要一些可以安全防范其他进程的东西,我建议你阅读http://en.wikipedia.org/wiki/File_locking并利用JNI进入操作系统级别。