下面这段代码功能是把 把Test目录下的aaa.xls文件移动到桌面上并重命名bbb.xls。直接运行是没有什么问题。
但是如果开启调试,再执行完File newFile = new File("C:\\Users\\admin\\Desktop\\bbb.xls")这步后(还没执行下面的输出语句),Test文件夹下的aaa.xls文件已经没有了,而桌面上已经出现了bbb.xls并且里面的内容就是aaa.xls的内容。
其效果相当于已经先执行了下面的file.renameTo(new File("C:\\Users\\admin\\Desktop\\bbb.xls"))。请问下这是为什么?        /**
 * 把Test目录下的aaa.xls文件移动到桌面上并重命名bbb.xls
 */
public static void test1(){
//源文件
File file = new File("C:\\Users\\admin\\Desktop\\Test\\aaa.xls");
System.out.println("is source file exist? "+file.exists());

//目标文件
File newFile = new File("C:\\Users\\admin\\Desktop\\bbb.xls");
System.out.println("is dest file exist? "+newFile.exists());
System.out.println("is source file exist? "+file.exists());

if(newFile.exists()){//目标文件是否已存在,存在则删除
System.out.println("is delete success ? "+ newFile.delete());

if(file.exists()){
System.out.println("does renameto succeed? "+file.renameTo(new File("C:\\Users\\admin\\Desktop\\bbb.xls")));
} else{
System.out.println("rename file fail? ");
}
}

解决方案 »

  1.   

    System.out.println("does renameto succeed? "+file.renameTo(new File("C:\\Users\\admin\\Desktop\\bbb.xls")));先执行括号里面的逻辑(重命名),再进行字符串的输出....有问题么?
      

  2.   


    我说的是在执行完File newFile = new File("C:\\Users\\admin\\Desktop\\bbb.xls");(这时候还没执行file.renameTo呢)后源文件已经删除了,桌面上也新建了bbb.xls文件文件。
      

  3.   

    eclipse 3.5.2 未出现此问题...
      

  4.   

    eclipse  版本3.7.0
    在debug的时候,按F6 (Step over的方式)会出现这个问题,
      

  5.   

    Eclipse菜单里
    Project-Clean。重新build下。
      

  6.   


    貌似是我的eclipse坏掉了,重新解压了一个eclipse没出现问题,谢谢啦