【发布时间】:2011-01-04 04:32:48
【问题描述】:
如何构建原子文件写入操作?该文件将由 Java 服务编写并由 python 脚本读取。
为了记录,读取远远大于写入。但是写入是分批进行的,而且往往很长。文件大小为兆字节。
现在我的做法是:
- 将文件内容写入临时文件 同一目录
- 删除旧文件
- 将临时文件重命名为旧文件名。
这是正确的方法吗?如何避免旧文件被删除但新文件名尚未重命名的情况?
这些编程语言(python 和 java)是否提供结构来锁定和避免这种情况?
【问题讨论】:
-
旁注:看起来 Java NIO.2 对此有更好的支持(至少在 API 级别):openjdk.java.net/projects/nio/javadoc/java/nio/file/…
-
@Pascal 。它在 Java 7 中。还有很长的路要走...... :-(