该方法底层是native方法,最底层会调用当前操作系统的重命名方法。
该方法使用于从一个文件系统到另一个文件系统时,可能不会成功。
该方法不是原子性的。
该方法可能在面对一个确切的path的时候可能会一直不成功。
所以你需要严格判断该方法的返回值。
java.io.Files有着针对各平台的移动及重命名的方法。
看下效率:
public static void main(String[] args) {
long millis = System.currentTimeMillis();
System.out.println(reName1());
System.out.println(System.currentTimeMillis() -millis);
}
/**
* 耗时 1毫秒
*/
private static boolean reName1() {
String oldName ="F:\\迅雷下载\\后窗.mkv";
String newName ="F:\\迅雷下载\\后窗_希区柯克.mkv";
return new File(oldName).renameTo(new File(newName));
}
/**
* 同目录树耗时 1毫秒
*/
private static boolean reName1() {
String oldName ="F:\\迅雷下载\\后窗.mkv";
String newName ="F:\\后窗_希区柯克.mkv";
return new File(oldName).renameTo(new File(newName));
}