最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

java file.renameTo返回false的原因及解決方案

 更新時(shí)間:2021年07月07日 11:00:37   作者:zhangSir134  
這篇文章主要介紹了java file.renameTo返回false的原因及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

java file.renameTo返回false原因

需要對(duì)文件夾下的文件重命名,發(fā)現(xiàn)返回false了,先用main方法測(cè)試,發(fā)現(xiàn)沒(méi)問(wè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),是一個(gè)文件是用文件流寫(xiě)的,流沒(méi)用close,導(dǎo)致文件重命名失敗了,模擬如下

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
    }

最終也是很好解決

找個(gè)合適的地方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方法,需要注意的坑

最近在接手老項(xiàng)目的時(shí)候,遇到File.renameTo(File file)方法,不清楚特性,于是研究了下源碼,發(fā)現(xiàn)底層調(diào)用的是Native方法實(shí)現(xiàn)的。

本身帶著對(duì)其用法的困惑,寫(xiě)了一個(gè)測(cè)試用例來(lái)揭開(kāi)它的神秘面紗,發(fā)現(xiàn)兩個(gè)在使用時(shí)值得注意的點(diǎn)。

測(cè)試用例代碼如下:

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();
      }
    }
  //調(diào)用renameTo()前
    System.out.println(file.exists());
    file.renameTo(new File("f:\\2.txt"));
  //調(diào)用renameTo()后
    System.out.println(file.exists());
  }
}

第一次運(yùn)行程序,目錄下1.txt和2.txt均不存在

得到結(jié)果如下:

可以看出調(diào)用renameTo前后,1.txt先是存在,然后消失,最后文件夾中生成了2.txt。

為了方便比較第二次結(jié)果,往2.txt寫(xiě)入些內(nèi)容,“hello world!”(原諒我的中二 ^-^)

第二次運(yùn)行程序,目錄下已存在2.txt,得到結(jié)果如下:

2.txt中的內(nèi)容并沒(méi)有被替換掉,證明此次重命名沒(méi)有成功。

總結(jié):

  • 如果被重命名的文件已存在,那么renameTo()不會(huì)成功
  • renameTo()成功后,原文件會(huì)被刪除

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。

相關(guān)文章

最新評(píng)論

雷山县| 东阿县| 曲水县| 栾川县| 根河市| 宜都市| 五大连池市| 灌云县| 贵港市| 南陵县| 乐清市| 绍兴县| 田阳县| 竹山县| 木兰县| 伊春市| 韩城市| 伊吾县| 页游| 治县。| 海安县| 革吉县| 东乡县| 武安市| 武山县| 上犹县| 葫芦岛市| 城固县| 东至县| 临沭县| 彭阳县| 扎赉特旗| 锦屏县| 宁远县| 资阳市| 历史| 清苑县| 清丰县| 资源县| 万源市| 梧州市|