国产成人精品亚洲777人妖,欧美日韩精品一区视频,最新亚洲国产,国产乱码精品一区二区亚洲

您的位置:首頁(yè)技術(shù)文章
文章詳情頁(yè)

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

瀏覽:2日期:2022-08-09 10:46:11
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é)果如下:

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

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

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

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

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

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

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

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

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

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

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

以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持好吧啦網(wǎng)。

標(biāo)簽: Java
相關(guān)文章:
主站蜘蛛池模板: 新津县| 荃湾区| 马鞍山市| 井研县| 南康市| 左贡县| 临江市| 安徽省| 全南县| 栖霞市| 凤凰县| 新建县| 顺平县| 临西县| 莱芜市| 繁昌县| 巴林左旗| 武冈市| 广河县| 平和县| 余江县| 清新县| 浦江县| 邹城市| 政和县| 莎车县| 屯门区| 徐闻县| 长泰县| 兴隆县| 黄浦区| 绵阳市| 衡阳县| 明水县| 金沙县| 陈巴尔虎旗| 旺苍县| 叙永县| 涿鹿县| 永年县| 贵定县|