File類三種得到路徑的方法


 

轉:

File類三種得到路徑的方法

getPath public String getPath()將此抽象路徑名轉換為一個路徑名字符串。所得到的字符串使用默認名稱分隔符來分隔名稱序列中的名稱。 返回: 此抽象路徑名的字符串形式

 

getAbsolutePath
public String getAbsolutePath()返回抽象路徑名的絕對路徑名字符串。
如果此抽象路徑名已經是絕對路徑名,則返回該路徑名字符串,這與 getPath() 方法一樣。如果此抽象路徑名是空的抽象路徑名,則返回當前用戶目錄的路徑名字符串,該目錄由系統屬性 user.dir 指定。否則,使用與系統有關的方式分析此路徑名。在 UNIX 系統上,通過根據當前用戶目錄分析某一相對路徑名,可使該路徑名成為絕對路徑名。在 Microsoft Windows 系統上,通過由路徑名指定的當前驅動器目錄(如果有)來分析某一相對路徑名,可使該路徑名成為絕對路徑名;否則,可以根據當前用戶目錄來分析它。


返回:
絕對路徑名字符串,它與此抽象路徑名表示相同的文件或目錄的
拋出:
SecurityException - 如果無法訪問所需的系統屬性值。
另請參見:
isAbsolute()
getCanonicalPath
public String getCanonicalPath()
                         throws IOException返回抽象路徑名的規范路徑名字符串。
規范路徑名是絕對路徑名,並且是惟一的。規范路徑名的准確定義與系統有關。如有必要,此方法首先將路徑名轉換成絕對路徑名,這與調用 getAbsolutePath() 方法的效果一樣,然后用與系統相關的方式將它映射到其惟一路徑名。這通常涉及到從路徑名中移除多余的名稱(比如 " . " " .. " )、分析符號連接(對於 UNIX 平台),以及將驅動器名轉換成標准大小寫形式(對於 Microsoft Windows 平台)。

表示現有文件或目錄的每個路徑名都有一個惟一的規范形式。表示非存在文件或目錄的每個路徑名也有一個惟一的規范形式。非存在文件或目錄路徑名的規范形式可能不同於創建文件或目錄之后同一路徑名的規范形式。同樣,現有文件或目錄路徑名的規范形式可能不同於刪除文件或目錄之后同一路徑名的規范形式。


返回:
表示與此抽象路徑名相同的文件或目錄的規范路徑名字符串
拋出:
IOException - 如果發生 I / O 錯誤(可能是因為構造規范路徑名需要進行文件系統查詢)
SecurityException - 如果無法訪問所需的系統屬性值,或者存在安全管理器,且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒絕對該文件進行讀取訪問
從以下版本開始:
JDK1. 1


二、例子:
1,getPath()與getAbsolutePath()的區別

public static void test1() {
         File file1 = new File( " .//test1.txt " );
         File file2 = new File( " D://workspace//test//test1.txt " );
         System.out.println( " -----默認相對路徑:取得路徑不同------ " );
         System.out.println(file1.getPath());
         System.out.println(file1.getAbsolutePath());
         System.out.println( " -----默認絕對路徑:取得路徑相同------ " );
         System.out.println(file2.getPath());
         System.out.println(file2.getAbsolutePath());
        
     }


得到的結果:

----- 默認相對路徑:取得路徑不同 ------
./test1.txt
D:/workspace/test/./test1.txt
----- 默認絕對路徑:取得路徑相同 ------
D:/workspace/test/test1.txt
D:/workspace/test/test1.txt

因為getPath()得到的是構造file的時候的路徑。
getAbsolutePath()得到的是全路徑
如果構造的時候就是全路徑那直接返回全路徑
如果構造的時候試相對路徑,返回當前目錄的路徑+構造file時候的路徑

2,getAbsolutePath()和getCanonicalPath()的不同

public static void test2() throws Exception {
         File file = new File( " ..//src//test1.txt " );
         System.out.println(file.getAbsolutePath());
         System.out.println(file.getCanonicalPath());
     }

得到的結果

D:/workspace/test/../src/test1.txt
D:/workspace/src/test1.txt

可以看到CanonicalPath不但是全路徑,而且把..或者.這樣的符號解析出來。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM