Google文件File.renameTo()
说:“这种方法的行为的许多方面是天生的平台依赖性:重命名(...)可能不是原子......”在Oracle Java 6和Windows中是File.renameTo()原子吗?
这是相当模糊的,我需要消除歧义。在WinXP和更新版本的Oracle Java 6中,此方法是否是原子的?
Google文件File.renameTo()
说:“这种方法的行为的许多方面是天生的平台依赖性:重命名(...)可能不是原子......”在Oracle Java 6和Windows中是File.renameTo()原子吗?
这是相当模糊的,我需要消除歧义。在WinXP和更新版本的Oracle Java 6中,此方法是否是原子的?
由于历史上win32没有提供对原子文件移动/重命名的支持,所以这是不太可能的。
他们为Vista添加了这个功能,所以Java7中的新文件功能可能实际上使用这些功能 - 不知道。但对于XP来说,你运气不好。
我怀疑这取决于您是重命名目录中的文件,在文件系统周围移动文件还是在文件系统之间移动文件(这是复制和删除) –