1. 程式人生 > >android 獲取路徑目錄方法 以及 獲取路徑方法

android 獲取路徑目錄方法 以及 獲取路徑方法

Environment 常用方法: 
* 方法:getDataDirectory()
解釋:返回 File ,獲取 Android 資料目錄。
* 方法:getDownloadCacheDirectory()
解釋:返回 File ,獲取 Android 下載/快取內容目錄。
* 方法:getExternalStorageDirectory()
解釋:返回 File ,獲取外部儲存目錄即 SDCard
* 方法:getExternalStoragePublicDirectory(String type)
解釋:返回 File ,取一個高階的公用的外部儲存器目錄來擺放某些型別的檔案
* 方法:getExternalStorageState()

解釋:返回 File ,獲取外部儲存裝置的當前狀態
* 方法:getRootDirectory()

解釋:返回 File ,獲取 Android 的根目錄

file的getPath getAbsolutePath和getCanonicalPath的不同

File的這三個方法在api中都有說明,僅以程式為例說明。

package test;

import java.io.File;
import java.io.IOException;

public class TestFilePath {


public static void main(String[] args) {
// TODO Auto-generated methodstub

System.out.println(System.getProperty("user.dir"));

try {
System.out.println("-----預設相對路徑:取得路徑不同------");
File file1 =new File("..\\src\\test1.txt");
System.out.println(file1.getPath());
System.out.println(file1.getAbsolutePath());
System.out.println(file1.getCanonicalPath());
System.out.println("-----預設相對路徑:取得路徑不同------");
File file =new File(".\\test1.txt");
System.out.println(file.getPath());
System.out.println(file.getAbsolutePath());
System.out.println(file.getCanonicalPath());

System.out.println("-----預設絕對路徑:取得路徑相同------");
File file2 =new File("D:\\workspace\\test\\test1.txt");
System.out.println(file2.getPath());
System.out.println(file2.getAbsolutePath());
System.out.println(file2.getCanonicalPath());
} catch (IOException e) {
// TODOAuto-generated catch block
e.printStackTrace();
}
}

}

程式執行結果如下:

F:\eclipseworkspace\testejb
-----預設相對路徑:取得路徑不同------
..\src\test1.txt
F:\eclipseworkspace\testejb\..\src\test1.txt
F:\eclipseworkspace\src\test1.txt
-----預設相對路徑:取得路徑不同------
.\test1.txt
F:\eclipseworkspace\testejb\.\test1.txt
F:\eclipseworkspace\testejb\test1.txt
-----預設絕對路徑:取得路徑相同------
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
D:\workspace\test\test1.txt
結論:

當輸入為絕對路徑時,返回的都是絕對路徑。

當輸入為相對路徑時:

getPath()返回的是File構造方法裡的路徑,是什麼就是什麼,不增不減

getAbsolutePath()返回的其實是user.dir+getPath()的內容,從上面F:\eclipseworkspace\testejb、F:\eclipseworkspace\testejb\..\src\test1.txt、F:\eclipseworkspace\testejb\.\test1.txt可以得出。
getCanonicalPath()返回的就是標準的將符號完全解析的路徑


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

返回:
絕對路徑名字串,它與此抽象路徑名錶示相同的檔案或目錄的
丟擲:
SecurityException - 如果無法訪問所需的系統屬性值。
另請參見:
isAbsolute()


public String getCanonicalPath()
throws IOException返回抽象路徑名的規範路徑名字串。
規範路徑名是絕對路徑名,並且是惟一的。規範路徑名的準確定義與系統有關。如有必要,此方法首先將路徑名轉換成絕對路徑名,這與呼叫 getAbsolutePath() 方法的效果一樣,然後用與系統相關的方式將它對映到其惟一路徑名。這通常涉及到從路徑名中移除多餘的名稱(比如 "." 和 "..")、分析符號連線(對於 UNIX 平臺),以及將驅動器名轉換成標準大小寫形式(對於 Microsoft Windows 平臺)。

表示現有檔案或目錄的每個路徑名都有一個惟一的規範形式。表示非存在檔案或目錄的每個路徑名也有一個惟一的規範形式。非存在檔案或目錄路徑名的規範形式可能不同於建立檔案或目錄之後同一路徑名的規範形式。同樣,現有檔案或目錄路徑名的規範形式可能不同於刪除檔案或目錄之後同一路徑名的規範形式。


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