我在'正确'文件重命名的意思是什么:
它应该适用于不同的平台。
它应该以某种方式处理以下情况:
是否有任何常见的解决方案/库/策略?
答案 0 :(得分:2)
如javadoc所述:
重命名此抽象路径名表示的文件。很多方面 这种方法的行为本质上是依赖于平台的: 重命名操作可能无法从一个文件系统移动文件 对另一个,它可能不是原子的,如果一个文件可能不会成功 目标抽象路径名已存在。回报 应始终检查值以确保重命名操作 很成功。
以下是一个例子:
// The File (or directory) with the old name
File oldFile = new File("old.txt");
// The File (or directory) with the new name
File newFile = new File("new.txt");
// Rename file (or directory)
boolean success = oldFile.renameTo(newFile);
if (!success) {
// File was not successfully renamed
}
我的建议是检查success
布尔值并使用API中定义的标准方法。
答案 1 :(得分:1)
google guava lib包含Files.move(..)mothod,它确认了你的一些要求 - 实际上,它尝试使用File.renameTo()移动文件,如果失败,则尝试复制 - 和 - 删除源策略。
我不知道用于检查可用空间的库,因为在移动/复制期间可用空间可以更改,并且一致处理低空间的唯一方法是使用复制/移动方法返回指向您的特殊错误代码/异常失败的原因 - 当前java File API没有......