簡體   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