日期:2014-05-20  浏览次数:21009 次

File类对象 renameTo(File des) 为什么返回false?
想写一段代码测试File类对象的不可变性,求解。。。谢谢!!!

File t1 = new File("D:" + File.separatorChar + "final.java");
File t2 = new File("D:" + File.separatorChar + "finalaa.java");
System.out.println("是否重命名成功:" + t1.renameTo(t2));//为什么无法重命名成功?

------解决方案--------------------
这样的,lz只是创建了文件路径,并没有真正地创建文件,所以如果你在File t1 = new File("D:" + File.separatorChar + "final.java");后面加一句 System.out.println(t1.exists());输出的肯定是false,同理t2也是一样的,一个不存在的文件是不能被重命名的。

改进方法如下:

在第一行后面加一行,t1.createNewFile();

File t1 = new File("D:" + File.separatorChar + "final.java");
t1.createNewFile();
System.out.println("t1 exists? " + t1.exists());

File t2 = new File("D:" + File.separatorChar + "finalaa.java");
boolean yes = t1.renameTo(t2);
if (yes) {
System.out.println("succeed");
} else
System.out.println("failed");
}

然后就能成功,已经测试过了,输出结果为

t1 exists? true
succeed