Class Overview (類概述)
一個由路徑名確定文件系統實體的“抽象”表示。這個路徑名可能是絕對路徑(相對于文件系統的根目錄)或是相對于程序運行的當前路徑。
文件所引用的實際文件可能存在也可能不存在。它也可能是忽略文件的名稱,只是一個目錄或是一個非常規的文件。
這個類提供了有限的函數來獲取或設置文件的權限,文件的類型,文件的最后修改時間。
當 Android 字符串轉換為 UTF-8 字節序列時,發送文件到操作系統,字節序列會被系統返回(從各種列表方法)按照 UTF-8 轉換為字符串。
Fields(字段)
public static final String pathSeparator 系統相關的字符串,用于在搜索路徑中分離組件(“:”)。
public static final char pathSeparatorChar 系統相關的字符,用于在搜索路徑中分離組件。(':')。這個是用來把 PATH 環境變量和類路徑(classpath)系統屬性分割成要搜索的目錄列表。
public static final String separator 系統相關的字符串用于分割文件名(“/”)。
public static final char separatorChar 系統相關的字符,用于分割文件名(“/”)。使用這個(而不是硬編碼)有助于其他系統的可移植性。
該字段從系統屬性“file.separator”初始化。以后更改此屬性不會對該字段或該類有影響。
Public Construcorts (公共的構造方法)
public File(File dir,String name)
通過指定的目錄和名字創建一個新的文件。
參數:
dir 文件存儲的目錄
name 該文件的名字
異常:
空指針 當 name 為空時
public File (String path)
通過指定的路徑創建一個文件
參數:
path 作文件的路徑
異常:
空指針 當 path 為空時
public File(String path,String name)
通過指定的目錄路徑和文件名稱創建一個新的文件,在兩者之間放置一個路徑分割符。
參數:
dirPath 儲文件的目錄的路徑。
name 文件的名稱。
異常:
空指針 當 name 為空時。
public File (URI uri)
通過指定的 URI 路徑創建新的文件。uri 需要是具有文件方案和非空路徑組件的絕對和分層統一資源標識符,但具有未定義的權限,查詢或片段組件。
參數:
uri 被用來創建文件的統一資源標識符。
異常:
空指針 當 uri 為空時。
非法參數 當 uri 不符合上述條件時。
Public Methods (公共方法)
public boolean canExecute()
測試此程序是否允許執行此文件。這是最好的努力結果,確定的唯一方法就是實際嘗試操作。
返回值:
如果能執行返回 true ,否則返回 false。
public boolean canRead()
測試該文件在當前環境是否可讀。
返回值:
如果可讀返回 true ,否則返回 false。
public boolean canWrite()
測試該文件在當前環境是否可寫。
返回值:
如果可寫返回 true,否則返回 false。
public int compareTo(File another)
返回此文件和另一文件的路徑的相對排序順序。排序依賴于平臺。
參數:
another 與該文件比較的文件。
返回值:
通過比較兩個路徑確定的一個 int 值。可比較的值在 Comparable 接口中描述。
public boolean createNewFile()
根據文件中存儲的路徑信息在文件系統上創建一個新的空文件。如果創建一個文件返回 true,如果文件已經存在返回 false。注意,即使這個文件不是一個文件(因為它是一個目錄)也會返回 false。
這個方法通常不是有用的。如果創建一個臨時文件的話使用 createTempFile(String ,String)方法代替。如果是讀/寫文件的話,用 FileInputStream,FileOutputStream,或是 RandmAccessFile,所有的這些都能創建文件。
注意,如果這個文件已經存在這個方法是不會拋出 IO 異常的,即使它不是一個常規的文件。用戶應該始終檢查返回值,此外還應調用 isFile()方法。
返回值:
如果文件被創建返回 ture ,如果文件已經存在返回 false。
異常:
IO 異常 如果不能創建文件。
public static File createTempFile(String prefix,String suffix,File directory)
在指定的目錄創建一個文件,用指定的前綴和后綴作為文件名的一部分。如果后綴為空的話,則使用 .tmp。
注意,這個方法不會調用 deleteOnExit()方法,在手動調用該方法之前,請參閱該方法的文檔。
參數:
prefix 空文件名的前綴
suffix 空文件名的后綴
directory 要寫入臨時文件的位置,如果為 null 的話就是默認位置,這個默認位置是來自于
“java.io.tmpdir” 系統屬性。可能需要將此屬性設置為現有的可寫目錄,以使此方法
正常工作。
返回值:
臨時文件
異常:
參數非法 當前綴的長度小 3。
IO 異常 寫入文件是出錯。
public static File createTempFile(String prefix,String suffix)
創建一個臨時的空文件,使用指定的前綴和后綴作為文件名的一部分。如果后綴為空的話,則使用 .tmp。當調用 createTempFile(String,String,File)方法,第三個參數為空時,使用該方法是方便的。
參數:
prefix 文件名的前綴
suffix 文件名的后綴
返回值:
臨時文件
異常:
IO 異常 寫入文件出錯
public boolean delete()
刪除這個文件。目錄是空的才能刪除這個文件。
注意,刪除失敗時這個方法不會拋出 IO 異常,用戶必須要檢查返回值。
返回值:
如果文件被刪除返回 true,否則返回 false。
public void deleteOnExit()
當 VM 正常終止時,文件自動刪除。
注意,在 Android 中,生命周期不包括 VM 的終止,因此調用這個方法不能確定文件是否被刪除。所以你應該使用以下最有效的方法:
- 使用 finally 語句手動調用 delete()方法
- 把文件做為一個集合,在程序的生命周期的合適位置進行處理
- 當任意一個reader 或 writer 打開它時,就使用 Unix 的策略刪除。沒有新的readers/writers 能夠訪問該文件,但是所有現有的 readers/writers 將仍然可以訪問,直到最后一個文件關閉。
public boolean equals(Object obj)
比較 obj 與這個文件,如果使用特定的路徑比較他們代表同一個對象就返回 true。
返回值:
當 obj 與當前的 file 代表的是同一個對象返回 true 否則返回 false。
public boolean exists()
返回一個布爾值表示這個文件是否能在底層文件系統找到。
返回值:
當這文件存在時返回 true 否則返回 false。
public File getAbsoluteFile()
返回一個使用該文件的絕對路徑創建的新的文件。等同于 new File(this.getAbsoluPath())。
public String getAbsolutePath()
返回該文件的絕對路徑。絕對路徑是開始于文件系統的根目錄。在 Android 中只有一個根目錄:/
絕對路徑的一個常用方法是將路徑作為命令行參數傳遞給進程,要移除相對路徑所隱藏的要求,該子目錄必須與其父目錄有相同的工作目錄。
public File getCanonicalFile()
返回用該文件的規范路徑創建的新的文件。等同于 new File(this.getCanonicalPath())。
返回值:
用該文件的規范路徑創建的新的文件。
異常:
IO 異常 發生 I/O 錯誤時。
public String getCanonicalPath()
返回該文件的規范路徑。絕對路徑是從文件系統的根開始的。規范路徑是具有符號鏈接和引用 “.” 或 “..” 的絕對路徑,如果路徑元素不存在(或不可搜索),則將規范化解釋為文本操作之間存在沖突(“a/../b” 的位置是 “b”,即使 “a” 不存在)。
大多數的用戶應該使用 getAbsolutePath()代替它。規范的路徑需要大量的計算,而且一般都是沒用的。規范路徑最常見的用法是,通過比較規范路徑測試兩個路徑是否指向同一個文件。
使用規范路徑可能是有害的,因為規范化刪除了符號鏈接。假設一個符號鏈接是有原因的,這是明智的,因為鏈接可能需要改變。規范除去了這個間接層。好的代碼一般避免緩存規范化路徑。
返回值:
文件的規范化路徑
異常:
IO 異常 當 IO 出現異常時。
public long getFreeSpace()
返回包含此路徑的分區上的空空余字節數。返回 0 當路徑不存在時。
注意,這可能是一個樂觀的高估,不應被視為一個保證應用程序實際上可以寫這么多字節。
public String getName()
返回由該文件表示的文件或目錄的名稱。
返回值:
該文件的名稱或是一個空的字符串當該文件的路徑沒有名稱部分。
public String getParent()
返回該文件的父文件的路徑名稱。
返回值:
該文件的父文件的路徑名稱或 null。
public File getParentFile()
返回由該文件的父文件的路徑名稱創建的一個新文件。這個路徑直到但不包括最后一個名稱。當該文件沒有父文件時返回 null。
返回值:
由該文件的父文件的路徑名稱創建的新文件,或是 null。
public String getPath()
返回文件的路徑。
public long getTotalSpace()
返回包含此路徑的分區上的全部字節數。返回 0 如果文件不存在。
public long getUsableSpace()
返回包含此路徑的分區上的可用字節數。返回 0 當此路徑不存在時。
注意,這可能是一個樂觀的高估,不應被視為一個保證應用程序實際上可以寫這么多字節。在 Android(或是其他以 Unix 為基礎的系統),此方法返回非 root 用戶的可用字節數,不管你是否實際運行為root,也不管用戶應用了其他任何配額或其他限制。(getFreeSpace 方法返回的字節數可能包含 root 的部分。)
public int hashCode()
返回接收器一個整型的哈希值。任何兩個相同的對象一定返回一樣的哈希值。
返回值:
文件的哈希值。
public boolean isAbsolute()
指示該文件的路徑名是否是絕對的。路徑名是否是絕對跟平臺相關。在 Android 中絕對路徑名開始于 '/' 字符。
返回值:
如果該文件的路徑名是絕對的返回 true 否則返回 false。
public boolean isDirectory()
指示該文件在文件系統上是否是一個目錄。
返回值:
如果該文件是一個目錄返回 true 否則返回 false。
public boolean File()
指示該文件在文件系統上是否是一個文件。
返回值:*
如果是文件返回 true 否則返回 false。
public boolean isHidden()
指示該文件是否是一個由操作系統定義的隱藏文件。隱藏這個概念是由系統決定的。在 Unix 系統中,當文件名是以 “.” 開頭的就被看作是隱藏的文件。對于 Windows 系統,在文件系統中有一個明確的標記來記錄隱藏文件 。
返回值:
如果是隱藏文件返回 true 否則返回 false。
public long lastModifide()
返回該文件最后修改的時間,精確到毫秒從 1970 年 1 月 1 日凌晨開始算起。如果文件不存在返回 0。
返回值:
文件最后的修改時間。
public long length()
返回文件的字節長度。文件不存在返回 0.如果是目錄則結果是未定義。
返回值:
文件的字節數。
public String[] list()
返回由該文件代表的目錄中的文件名的字符串數組。如果文件不是目錄則返回 null。
進入 . 和 .. 代表的是當前目錄的父目錄,不會作為該數組的一部分返回。
返回值:
該文件里的文件名的數組或 null。
public String[] list(FilenameFilter filter)
返回由該文件代表的目錄中的文件的數組。這個數組將通過 FilenameFilter 和作為字符串返回的具有匹配名稱的文件的名稱被過濾。如果該文件不是目錄返回 null。如果 filter 是 null 的話則所有的文件都可以匹配。
進入 . 和 .. 代表的是當前目錄的父目錄,不會作為該數組的一部分返回。
參數:
filter 匹配名稱的篩選器,可以為 null。
返回值:
文件數組或 null。
public File[] listFiles()
返回由該文件代表的目錄中的文件的數組。如果 file 不是目錄則返回 null。如果該文件的路徑是絕對路徑,那么數組中的路徑也是絕對路徑,否則是相對路徑。
返回值:
文件是數組或 null。
public static File[] lsitRoots()
返回文件系統的根。在 Android 或是其他 Unix 系統中,只有一個根 /。
public boolean mkdir()
由該文件創建一個目錄,假設它的父目錄是存在的。如果想要創建不存在的父目錄使用 mkdirs()。
注意,當出現錯誤時這個方法不會拋出異常。用戶必須檢查返回值。 注意,當目錄存在時返回 false。如果在返回時想要知道該文件是否存在,使用(f.mkdir() || f.isDirectory())或者忽略該方法的返回值直接調用 isDirectory().
返回值:
如果目錄被創建返回 ture,如果發生錯誤或是目錄已經存在返回 false。
public boolean mkdirs()
由該文件創建一個目錄,并且創建所有必須但不存在的父目錄。如果不想創建父目錄使用 mkdir()。
注意,當出現錯誤時該方法不會拋出異常。用戶必須要檢查返回值。注意,如果當目錄存在時返回 false。如果在返回時想知道目錄是否存在,使用(f.mkdirs() || f.isDirctory())或者忽略該方法的返回值,直接調用 isDirctory().
返回值:
如果目錄被創建返回 ture,如果發生錯誤或是目錄已經存在返回 false。
pubic boolean renameTo(File newPath)
以新路徑重命名文件。當兩個都是文件或都是目錄時該操作才能生效。
經常會發生一些錯誤。 一些更容易發生的錯誤包括:
- 在包含源和目標路徑的目錄上寫入權限是必須的。
- 兩個路徑的父路徑的查詢權限是必須的。
- 兩個路徑都要在同一個掛載點上。在 Android 中,應用程序最有可能碰到這個限制,當試圖在內部存儲和 SD 卡之間復制時。
注意,當發生錯誤時該方法不會拋出異常。用戶必須檢查返回值。
參數:
newPath 新的路徑
返回值:
成功時返回 true。
public boolean setExecutable(boolean executable)
等同于 setExecutable(executable,true).
public boolean setExecutable(boolean executable,boolean ownerOnly)
操作此文件指定的抽象路徑的執行權限。
注意,當出現錯誤時該方法不會拋出異常,用戶必須檢查返回值。
參數:
executable 為 true 時允許執行權限,否則不允許。
ownerOnly 為 true 時只有自己有操作執行權限,否則就是所有人。如果底層系統不區分所有者和其他用戶,則該操作將應用于每個人,而不考慮該值。
返回值:
當且僅當操作成功時返回 true。如果用戶沒有權限去更改該抽象路徑的訪問權限則操作失敗。如果底層文件系統不支持執行權限或是 executable 的值為 false 時操作失敗。
public boolean setLastModified(long time)
設置文件最后被修改的時間,精確到秒從 1970 年 1 月 1 日凌晨開始。
注意,出現錯誤時該方法不會拋出異常,用戶必須檢查返回值。
參數:
time 文件最后被修改的時間。
返回值:
如果操作成功返回 true,否則返回 false。
異常:
參數非法異常 當 time < 0.
public boolean setReadOnly()
等同于 setWritable(false,fasle).
public boolean setReadable(boolean raedable)
等同于 setReadable(readable,ture).
public boolean setReadable(boolean readable,boolean ownerOnly)
操作此文件指定的抽象路徑的讀取權限。
參數:
readable 為 true 時允許讀的權限,否則不允許。
ownerOnly 為 true 時僅自己可操作讀的權限,否則是所有人。 如果底層系統不區分所有者和其他用戶,則該操作將應用于每個人,而不考慮該值。
*返回值:
當且僅當操作成功時返回 true。如果用戶沒有權限去更改該抽象路徑的訪問權限則操作失敗。如果底層文件系統不支持執行權限或是 readable 的值為 false 時操作失敗。
public boolean setWritable(boolean write,boolean ownerOnly)
操作此文件指定的抽象路徑的寫入權限。
*參數:
writable 為 ture 時允許寫的權限,否則不允許。
ownerOnly 為 true 時僅自己可操作寫的權限,否則是所有人。 如果底層系統不區分所有者和其他用戶,則該操作將應用于每個人,而不考慮該值。
返回值:
當且僅當操作成功時返回 true。如果用戶沒有權限去更改該抽象路徑的訪問權限則操作失敗。
public boolean setWritable(boolean writable)
等同于 setWritable(writable,ture).
public String toString()
返回一個簡潔的、可讀的描述該文件的字符串。
返回值:
描述文件的可打印的值。
public URI toURI()
返回文件的統一資源標識符。這個 URI 是由系統決定的,不能在不同的操作/文件系統之間轉換。
返回值:
文件的 URI.
public URL toURL()
在 API 19 中該方法已經被廢棄了。
使用 toURI() 和 toURL() 去正確的避開非法字符。
返回文件的統一資源定位符。URL 是由系統決定的,不能在不同的操作/文件系統之間轉換。
返回值:
文件的 URL
異常:
MalformedURLException 當路徑不能被轉換為 URL 時。