java - 在操作系统级别的一个原子操作中创建和写入文件

标签 java file io atomic

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

最佳答案

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

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

关于java - 在操作系统级别的一个原子操作中创建和写入文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13586586/

相关文章:

java - 如何为 for 循环创建多线程?

java - EXCEPTION_ACCESS_VIOLATION框架出现问题:#j

c++ - 如何从 .t​​xt 文件中读取带有符号 "/"和 ":"的生日?

java - 对顺序访问的文件使用内存映射有什么好处吗?

input - Lua,io.input()找不到文件

java - 使用 java 手动运行命令(使用 cmd.exe)

java - 运行我的代码时没有任何反应 [BigInteger]

java - 这是读取充满 double 的二进制文件的好方法吗?

python - 错误 : The expanduser ('~' ) cannot be added to dirs. 'xxx' :'xxx"

java - 通过java程序读取xml文件