java file.renameTo返回false的原因及解決方案
需要對文件夾下的文件重命名,發(fā)現(xiàn)返回false了,先用main方法測試,發(fā)現(xiàn)沒問題,如下
public static void main(String[] args) throws IOException {File file1 = new File('D:aabb.xml');File file2 = new File('D:ccdd.xml');boolean b = file1.renameTo(file2);System.out.println(b); // true }
最后發(fā)現(xiàn),是一個文件是用文件流寫的,流沒用close,導致文件重命名失敗了,模擬如下
public static void main(String[] args) throws IOException {File file1 = new File('D:aabb.xml');FileWriter out = new FileWriter(file1);File file2 = new File('D:ccdd.xml');boolean b = file1.renameTo(file2);System.out.println(b);// false }最終也是很好解決
找個合適的地方close就好了
public static void main(String[] args) throws IOException {File file1 = new File('D:aabb.xml');FileWriter out = new FileWriter(file1);out.close();File file2 = new File('D:ccdd.xml');boolean b = file1.renameTo(file2);System.out.println(b);//true }java File.renameTo方法,需要注意的坑
最近在接手老項目的時候,遇到File.renameTo(File file)方法,不清楚特性,于是研究了下源碼,發(fā)現(xiàn)底層調用的是Native方法實現(xiàn)的。
本身帶著對其用法的困惑,寫了一個測試用例來揭開它的神秘面紗,發(fā)現(xiàn)兩個在使用時值得注意的點。
測試用例代碼如下:
import java.io.File;import java.io.IOException; public class TestRenameTo { public static void main(String[] args) { File file = new File('f:1.txt'); if (!file.isFile()) { try {file.createNewFile(); } catch (IOException e) {e.printStackTrace(); } } //調用renameTo()前 System.out.println(file.exists()); file.renameTo(new File('f:2.txt')); //調用renameTo()后 System.out.println(file.exists()); }}
第一次運行程序,目錄下1.txt和2.txt均不存在
得到結果如下:


可以看出調用renameTo前后,1.txt先是存在,然后消失,最后文件夾中生成了2.txt。
為了方便比較第二次結果,往2.txt寫入些內容,“hello world!”(原諒我的中二 ^-^)

第二次運行程序,目錄下已存在2.txt,得到結果如下:



2.txt中的內容并沒有被替換掉,證明此次重命名沒有成功。
總結: 如果被重命名的文件已存在,那么renameTo()不會成功 renameTo()成功后,原文件會被刪除以上為個人經驗,希望能給大家一個參考,也希望大家多多支持好吧啦網。
相關文章:
1. ASP中實現(xiàn)字符部位類似.NET里String對象的PadLeft和PadRight函數(shù)2. vue前端RSA加密java后端解密的方法實現(xiàn)3. JSP+Servlet實現(xiàn)文件上傳到服務器功能4. 基于javaweb+jsp實現(xiàn)企業(yè)財務記賬管理系統(tǒng)5. vue項目登錄成功拿到令牌跳轉失敗401無登錄信息的解決6. 淺談由position屬性引申的css進階討論7. ASP動態(tài)網頁制作技術經驗分享8. php使用正則驗證密碼字段的復雜強度原理詳細講解 原創(chuàng)9. 基于jsp+mysql實現(xiàn)在線水果銷售商城系統(tǒng)10. CSS可以做的幾個令你嘆為觀止的實例分享

網公網安備