我有一个文件D:\a.txt,想改成D:\b.txt. 只是改文件名,不改变目录结构。
我用的renameTo,但是老是返回false,请问是咋个回事呢?怎么安全的重命名文件呢?
首先,我没有与b.txt同名的文件。请问怎么回事呢?有时候能成功。很多时候不能。

解决方案 »

  1.   


    /*
     * Created on Sep 28,2008
     * 
     * Copyright 布谷鸟
     */
    package file;import java.io.File;/**
     * 
     * @Author <a href="[email protected]">cuckoo</a>
     * @Time 15:24
     * @Description rename file
     *
     */
    public class ChangeName {
    public static void main(String args[]){
    File orginalFile = new File("C:/file.txt");
    if(orginalFile.exists()){
    //get directory
    String dir = orginalFile.getParent();
    System.out.println(dir);
    String newName = "new.txt";
    File newFile = new File(dir+newName);
    if(orginalFile.renameTo(newFile)){
    System.out.println(" change name success ");
    }else{
    System.out.println(" fuck .");
    }
    }
    }
    }
     /** GOOD LUCK */---------------------------------------------------
    Quietly through ....
      

  2.   

    File newFile = new File(dir+newName);
    改成:
      File newFile = new File(dir + File.separator +newName);
      

  3.   

    谢啦
    -----------------------------------
    Quietly through ....
      

  4.   

    代码很简单:String filePath = "D:\a.txt";
    str = "D:\b.txt";
    File file = new File(filePath);

    File dstfile = new File(str);
    if(!file.renameTo(dstfile))
    {
    log.WriteInfoLog("UpdateFile"+str+"失败");
    }

    }
    catch(Exception e)
    {
    log.WriteErrorLog("UpdateFile:"+e.getMessage());
    }
      

  5.   

    使用renameTo public boolean renameTo(File dest)重新命名此抽象路径名表示的文件。 
    此方法行为的许多方面都是与平台有关的:重命名操作无法将一个文件从一个文件系统移动到另一个文件系统,该操作可能不是原子的,如果已经存在具有目标抽象路径名的文件,则该操作可能无法获得成功。应该始终检查返回值,确保重命名操作成功。 import java.io.*;
    public class x6 { /**
     * @param args
     */
    public static void main(String[] args) {
    // TODO 自动生成方法存根 File f=new File("D:/55273.mp3");
    String vv=f.getParent();
    String filenew="0001.txt";
    File newfile=new File(vv+File.separator+filenew);
    if(f.renameTo(newfile)==true)
    {
    System.out.println("操作成功!");
    }
    else
    {
    System.out.println("操作失败!");
    }
    }}
      

  6.   

    public void rename(String filepath) {
    File file = new File(filepath);
    File temp[] = file.listFiles();
    String str[] = new String[temp.length];
    ArrayList temparray = new ArrayList();
    System.out.println(temp.length);
    String tempname = "";
    for (int k = 0; k < temp.length; k++) {
    String name = temp[k].getName();
    tempname = "G:/1/" + cutName(name);// "G:/1/"
    temp[k].renameTo(new File(tempname));
    }
    }