renameTo()的小問題

今天在研究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());
    }


}

發佈了31 篇原創文章 · 獲贊 4 · 訪問量 9萬+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章