AFAIK号
原因是要使这种原子 *** 作成为可能,必须以事务性文件系统的形式提供OS支持。主流 *** 作系统都没有提供事务性文件系统。
编辑
-至少对于符合POSIX的系统,我错了。
rename如果@janneb指出,如果具有目标名称的文件已经存在,则POSIX系统调用将执行原子替换。这应该足以自动执行OP的 *** 作。
但是,事实仍然是, 不能
File.renameTo()明确保证Java方法是原子方法,因此它不能为OP问题提供跨平台的解决方案。 __
编辑2- 使用Java 7,您可以将其
java.nio.file.Files.move(Path source, Path target,CopyOption...options)与copyOptions和一起使用
ATOMIC_MOVE。如果( *** 作系统/文件系统)不支持此功能,则应获取异常。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)