关于java 的File类的renameTo()方法的一点想法

      最近学习java时发现了一个问题,renameTo()方法是将文件重命名, 还是拷贝一份然后重命名?

      首先,我写了这样的代码

 import java.io.File;
import java.io.IOException;
import java.util.Date;


public class UseFile {
public static void main(String args[]) throws Exception {
// 创建目录
File dir1 = new File("D:\\dir1");
if (!dir1.exists()) {
dir1.mkdir();
}


// 在某个目录下 创建目录
File dir2 = new File("D:\\dir1", "dir2");
if (!dir2.exists()) {
dir2.mkdirs();
}


// 在某个目录下 创建多层目录
File dir4 = new File(dir1, "dir3\\dir4");
if (!dir4.exists())
dir4.mkdirs();


// 在某个目录下 创建文件
File file = new File(dir2, "test.txt");
if (!file.exists())
file.createNewFile();


file = new File("D:/dir1/mytest.exe");
if (!file.exists())
file.createNewFile();
        
dir2.renameTo(new File("D:\\dir1/sy1"));
//dir2.renameTo(new File("D:/dir1/sy2"));

}

结果是


再运行的代码如下

 import java.io.File;
import java.io.IOException;
import java.util.Date;


public class UseFile {
public static void main(String args[]) throws Exception {
// 创建目录
File dir1 = new File("D:\\dir1");
if (!dir1.exists()) {
dir1.mkdir();
}


// 在某个目录下 创建目录
File dir2 = new File("D:\\dir1", "dir2");
if (!dir2.exists()) {
dir2.mkdirs();
}


// 在某个目录下 创建多层目录
File dir4 = new File(dir1, "dir3\\dir4");
if (!dir4.exists())
dir4.mkdirs();


// 在某个目录下 创建文件
File file = new File(dir2, "test.txt");
if (!file.exists())
file.createNewFile();


file = new File("D:/dir1/mytest.exe");
if (!file.exists())
file.createNewFile();
        
dir2.renameTo(new File("D:\\dir1/sy1"));
dir2.renameTo(new File("D:/dir1/sy2"));

}

结果却是


结果“拷贝”了一份。

      后来发现是这样的,第二次运行,又建立了文件dir2,然后重命名为sy2,文件sy1是第一次运行的结果。

没有更多推荐了,返回首页