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

网友投稿 1335 2022-10-13


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

java file.renameTo返回false原因

需要对文件夹下的文件重命名,发现返回false了,先用main方法测试,发现没问题,如下

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

}

最后发现,是一个文件是用文件流写的,流没用close,导致文件重命名失败了,模拟如下

public static void main(String[] args) throws IOException {

File file1 = new File("D:\\aabb.xml");

FileWriter out = new FileWriter(file1);

File file2 wNPweKw= 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"http://);

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)方法,不清楚特性,于是研究了下源码,发现底层调用的是Native方法实现的。

本身带着对其用法的困惑,写了一个测试用例来揭开它的神秘面纱,发现两个在使用时值得注意的点。

测试用例代码如下:

import java.io.File;

import java.io.IOExhttp://ception;

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中的内容并没有被替换掉,证明此次重命名没有成功。

总结:

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。


版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:网络测试仪实操手册 RENIX机框管理(网络测试仪的使用方法)
下一篇:强烈推荐github 6.6k star前微信技术专家基于go开源IM项目OpenIM(强烈推荐必看的国产剧)
相关文章

 发表评论

暂时没有评论,来抢沙发吧~