File.renameTo()失败

yur*_*ris 8 java file

我有eclipse插件jface应用程序.线程通过BufferedWriter写入文件.写完后我关闭缓冲区后我尝试重命名文件.

但有时文件不会重命名!

我尝试在几次重试之间添加一些Thread.Sleep(BIG_NUMBER),这没有用.

它看起来像文件获得某种锁定.(当我杀死jvm时,我可以重命名该文件).

有什么我可以做的吗?

操作系统:Windows XP,Windows 7 JAVA版本:1.5

Jer*_*vel 15

File.RenameTo()依赖于平台,并且依赖于要满足的几个条件才能成功重命名文件,更好的选择是使用

Path source = currentFile.toPath();
try {
     Files.move(source, source.resolveSibling(formattedName));
} catch (IOException e) {
     e.printStackTrace();
}
Run Code Online (Sandbox Code Playgroud)

在这里阅读更多.

来自javadocs:

此方法行为的许多方面本质上依赖于平台:重命名操作可能无法将文件从一个文件系统移动到另一个文件系统,它可能不是原子的,如果具有目标抽象路径名的文件可能不会成功已经存在.应始终检查返回值以确保重命名操作成功.

请注意,Files类定义了以独立于平台的方式移动或重命名文件的移动方法.

  • 不能用那个!Java 1.5 (5认同)