Ste*_*n C 10
AFAIK没有.
原因在于,为了使这种原子操作成为可能,必须以事务文件系统的形式支持OS.并且主流操作系统都没有提供事务文件系统.
编辑 - 我至少对POSIX兼容的系统错了.rename
如果具有目标名称的文件已存在,则POSIX 系统调用执行原子替换...如@janneb所指出的那样.这应该足以以原子方式执行OP的操作.
然而,事实仍然是Java File.renameTo()
方法明确地不保证是原子的,因此它不提供OP问题的跨平台解决方案.
编辑2 - 使用Java 7,您可以使用java.nio.file.Files.move(Path source, Path target, CopyOption... options)
copyOptions和ATOMIC_MOVE
.如果不支持(由OS /文件系统),则应该获得异常.
归档时间: |
|
查看次数: |
12541 次 |
最近记录: |