最近学习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是第一次运行的结果。