繁体   English   中英

在Java中重命名文件的正确方法是什么?

[英]What is the proper way to rename a file in Java?

在'正确'文件重命名下我的意思是:

  1. 它应该在不同的平台上工作。

  2. 在以下情况下它应该以某种方式处理:

    1. 文件被锁定
    2. 已存在具有“新”名称的文件
    3. 磁盘上没有足够的可用空间来完成操作。

有没有共同的解决方案/库/策略?

如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​​中定义的标准方法。

google guava lib包含Files.move(..)mothod,它确认了你的一些要求 - 实际上,它试图用File.renameTo()移动文件,如果失败,则尝试复制并删除源代码战略。

我不知道检查可用空间的库,因为在移动/复制期间可用空间可以改变,并且一致处理低空间的唯一方法是使用复制/移动方法返回特殊错误代码/异常,指出你的原因失败 - 当前的java File API没有...

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM