今天在研究File的时候,发现renameTo()并没有想象的那么好.
在mac下,例如有文件A,B.
如果两个文件不在同一个文件夹,B要改名成A,那么B会被改名成A并且被移动到原先A所在的目录并且覆盖.
renameTo()仅仅是改名,并不能改变实例.
import
java.io.
*
;

/**
* 文件名的处理
* @author chengyumin
* String getName(); 获得文件的名称,不包含文件所在的路径。
* String getPath(); 获得文件的路径。
* String getAbsolutePath(); 获得文件的绝对路径。
* String getParent(); 获得文件的上一级目录的名称。
* String renameTo(File newName); 按参数中给定的完整路径更改当前的文件名。
* int compareTo(File pathName); 按照字典顺序比较两个文件对象的路径。
* boolean isAbsolute(); 测试文件对象的路径是不是绝对路径。
*/
public
class
ProcessFileName
{

public static void main(String[] args)
{
File fileObject1 = new File("firstFil.txt");
File fileObject2 = new File("firstFile.txt");
if(!fileObject1.exists()){
try{
//建立新文件
fileObject1.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
}
if(!fileObject2.exists()){
try{
//建立新文件
fileObject2.createNewFile();
}catch(IOException e){
e.printStackTrace();
}
}
System.out.println("* * * * * * * * * * * * * * * * * * * * * * * * ");
System.out.println("There are some information of fileObject1's file name:");
System.out.println("fileObject1: " + fileObject1);
System.out.println("fileObject2: " + fileObject2);
System.out.println("file name: " + fileObject1.getName());
System.out.println("file path: " + fileObject1.getPath());
System.out.println("file absolute path: " + fileObject1.getAbsolutePath());
System.out.println("file's parent directory: " + fileObject1.getParent());
System.out.println("file's absoulte path: " + fileObject1.isAbsolute());
int sameName = fileObject1.compareTo(fileObject2);
System.out.println("fileObject1 compare to fileObject2: " + sameName);
fileObject1.renameTo(fileObject2);
System.out.println(fileObject1);
System.out.println(fileObject1.exists());
fileObject1 = fileObject2;
System.out.println(fileObject1);
System.out.println(fileObject1.exists());
System.out.println("file's new name: " + fileObject1.getName());
}

}
在mac下,例如有文件A,B.
如果两个文件不在同一个文件夹,B要改名成A,那么B会被改名成A并且被移动到原先A所在的目录并且覆盖.
renameTo()仅仅是改名,并不能改变实例.



























































