我写了个程序,最后一个功能是要实现重命名功能。
File file=new File("F:/data/b.txt");
File file2=new File("F:/data/a.txt");
boolean b=file.renameTo(file2);
System.out.println("boolean:"+b);
打印结果是false
为什么无法重命名呢?

解决方案 »

  1.   

    而且
    file.delete()也是false?
    向各位请教了。
      

  2.   

    你先调用f.exists()看下返回值先……
      

  3.   

    查看了下api,试了下,File dest中参数:
    dest - 指定文件的新抽象路径名 
    你这句:file.renameTo(file2);是要把b.txt重新保存为a.txt。但是同一个文件夹中a文件已经存在,所以失败了,可以删掉a试试,就成功了
    renameTo
    public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。 
    此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作不是不可分的,如果已经存在具有目标抽象路径名的文件,那么该操作可能无法获得成功。应该始终检查返回值,以确保重命名操作成功。 
    参数:
    dest - 指定文件的新抽象路径名 
    返回:
    当且仅当重命名成功时,返回 true;否则返回 false 
      

  4.   

    你的data文件夹底下是不是已经存在了a.txt文件啊,要不把代码都贴上来吧,我也遇到过类似的问题!!
    那次好像是io流没关闭!!你这次也可能其他地方有问题!!
      

  5.   

    renameTo(File dest)  重新命名此抽象路径名表示的文件。 注意抽象这两个字
    File f1 = new File("c:/error.txt");
    File f2 = new File("c:/error1.txt");
    if(f2.exists()){
    f2.delete();
    }
    System.out.println(f2.exists());
    boolean b = f1.renameTo(f2);
    System.out.println(b);
      

  6.   

    我的打印结果为 :
    false
    true
      

  7.   

    我也遇到了和LZ相同的问题,也是无法重命名,但是可以先重命名,然后再执行其他操作!如果先执行其他的操作,比如读这个文件,然后再修改这个文件名字,就无法重命名了,我先把代码贴出来了,大家帮忙了啊!!
                    File file = new File(fileName);
    File newFile = new File(fileName.replace("2008", "2011"));

    BufferedReader bReader = new BufferedReader(new FileReader(file));
    PrintWriter pWriter = new PrintWriter(newFile.getPath());
    String linesString = "";
    if (!file.exists()) {
    throw new RuntimeException("文件不存在");
    }else{
    while((linesString = bReader.readLine())!=null){
    System.out.println(linesString.replace("2008-", "2009-"));
    }
    bReader.close();
    pWriter.close();
    }
    if(file.renameTo(newFile)){
    System.out.println("Rename file succeed");
    }else {
    System.out.println("Rename file failed");
    } }
      

  8.   

    可能是file2已经存在,所以不能renameTo,也可以是因为file2被你程序或者其它程序打开了