这是因为您的目录,file1和file2指向旧路径.
执行这些行后,
File dir = new File("DIR");
dir.mkdir();
File file1 = new File(dir,"myfile1.txt");
file1.createNewFile();
File file2 = new File(dir,"myfile2.txt");
file2.createNewFile();
这些将是变量引用的路径,
dir = "DIR" // Exists
file1 = "DIR\myfile1.txt" //Exists
file2 = "DIR\myfile2.txt" //Exists
执行后,
dir.renameTo(new File("myDIR"));
变量引用的路径仍然相同,
dir = "DIR" // Doesn't exist anymore because it's moved.
file1 = "DIR\myfile1.txt" // Doesn't exist anymore because it's moved along with dir.
file2 = "DIR\myfile2.txt" // Doesn't exist anymore because it's moved along with dir.
所以,当你打电话时,
System.out.print(file1.renameTo(new File(dir,"myf1.txt")));
您在不存在的文件和不存在的目录上调用renameTo().所以它一定会失败.
即使你在dir,file1或file2中的任何一个上调用.exists()方法,它也只会返回false.