繁体   English   中英

不使用renameTo()重命名文件 - Java

[英]Renaming a file without using renameTo() - Java

无视我的上一篇文章,我发现了问题的根源。 我正在使用

a.renameTo(b)

当b不存在时。 它不存在的原因是因为存在符号链接,所以如果b是/usr/name/folder/file ,那么b实际上是/mnt/MountTest因为符号链接是指向该目录。

所以问题是,是否有另一种方法使用字符串值在Java中重命名文件? 如果没有,这个重命名程序怎么能以不同的方式完成?

重命名将重命名它...如果它在同一个文件系统上。

如果renameTo()失败,则需要将其复制到新位置,然后删除原始位置。

重命名文件在整个文件系统中也存在很大问题。 请参见http://bugs.sun.com/bugdatabase/view_bug.do?bug_id=4073756 臭虫报告的评论者发布了一些示例代码,并指出您可以使用Process.exec。 Apache Commons IO和Google Guava都有安全移动文件的实用程序:

我觉得你很困惑。 java.util.File不代表某些文件系统上的文件。 它表示文件的路径。

问题不在于涉及符号链接; 问题是你不能跨文件系统原子重命名。 元问题是Java文件操作设计糟糕,并没有抛出适当的异常,并且在出现故障时不提供错误代码!

怎么样:

a.renameTo(new File("/your/path/here/");

暂无
暂无

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

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