2011-11-18 38 views
3

Google文件File.renameTo()说:“这种方法的行为的许多方面是天生的平台依赖性:重命名(...)可能不是原子......”在Oracle Java 6和Windows中是File.renameTo()原子吗?

这是相当模糊的,我需要消除歧义。在WinXP和更新版本的Oracle Java 6中,此方法是否是原子的?

+0

我怀疑这取决于您是重命名目录中的文件,在文件系统周围移动文件还是在文件系统之间移动文件(这是复制和删除) –

回答

4

在此基础上回答xpost

“的Win32不保证原子文件元数据操作,我会提供一个引用,但有没有 - 这一事实,没有任何书面或记录保证意味着尽可能多的”

4

由于历史上win32没有提供对原子文件移动/重命名的支持,所以这是不太可能的。

他们为Vista添加了这个功能,所以Java7中的新文件功能可能实际上使用这些功能 - 不知道。但对于XP来说,你运气不好。