JAVA——File.renameTo方法,需要注意的坑

最近在接手老项目的时候,遇到File.renameTo(File file)方法,不清楚特性,于是研究了下源码,发现底层调用的是Native方法实现的。本身带着对其用法的困惑,写了一个测试用例来揭开它的神秘面纱,发现两个在使用时值得注意的点。

测试用例代码如下:

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均不存在

,得到结果如下:

JAVA——File.renameTo方法,需要注意的坑_第1张图片

JAVA——File.renameTo方法,需要注意的坑_第2张图片

可以看出调用renameTo前后,1.txt先是存在,然后消失,最后文件夹中生成了2.txt。

为了方便比较第二次结果,往2.txt写入些内容,“hello world!”(原谅我的中二 ^-^)

JAVA——File.renameTo方法,需要注意的坑_第3张图片

第二次运行程序,目录下已存在2.txt,得到结果如下:

JAVA——File.renameTo方法,需要注意的坑_第4张图片

JAVA——File.renameTo方法,需要注意的坑_第5张图片

JAVA——File.renameTo方法,需要注意的坑_第6张图片

2.txt中的内容并没有被替换掉,证明此次重命名没有成功。

总结:

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

你可能感兴趣的:(JAVA——File.renameTo方法,需要注意的坑)