File

Class Overview (類概述)

一個由路徑名確定文件系統實體的“抽象”表示。這個路徑名可能是絕對路徑(相對于文件系統的根目錄)或是相對于程序運行的當前路徑。

文件所引用的實際文件可能存在也可能不存在。它也可能是忽略文件的名稱,只是一個目錄或是一個非常規(guī)的文件。

這個類提供了有限的函數來獲取或設置文件的權限,文件的類型,文件的最后修改時間。

當 Android 字符串轉換為 UTF-8 字節(jié)序列時,發(fā)送文件到操作系統,字節(jié)序列會被系統返回(從各種列表方法)按照 UTF-8 轉換為字符串。

Fields(字段)

public static final String pathSeparator 系統相關的字符串,用于在搜索路徑中分離組件(“:”)。

public static final char pathSeparatorChar 系統相關的字符,用于在搜索路徑中分離組件。(':')。這個是用來把 PATH 環(huán)境變量和類路徑(classpath)系統屬性分割成要搜索的目錄列表。

public static final String separator 系統相關的字符串用于分割文件名(“/”)。

public static final char separatorChar 系統相關的字符,用于分割文件名(“/”)。使用這個(而不是硬編碼)有助于其他系統的可移植性。

該字段從系統屬性“file.separator”初始化。以后更改此屬性不會對該字段或該類有影響。

Public Construcorts (公共的構造方法)

public File(File dir,String name)

通過指定的目錄和名字創(chuàng)建一個新的文件。

參數:

dir 文件存儲的目錄

name 該文件的名字

異常:

空指針 當 name 為空時

public File (String path)

通過指定的路徑創(chuàng)建一個文件

參數:

path 作文件的路徑

異常:

空指針 當 path 為空時

public File(String path,String name)

通過指定的目錄路徑和文件名稱創(chuàng)建一個新的文件,在兩者之間放置一個路徑分割符。

參數:

dirPath 儲文件的目錄的路徑。

name 文件的名稱。

異常:

空指針 當 name 為空時。

public File (URI uri)

通過指定的 URI 路徑創(chuàng)建新的文件。uri 需要是具有文件方案和非空路徑組件的絕對和分層統一資源標識符,但具有未定義的權限,查詢或片段組件。

參數:

uri 被用來創(chuàng)建文件的統一資源標識符。

異常:

空指針 當 uri 為空時。

非法參數 當 uri 不符合上述條件時。

Public Methods (公共方法)

public boolean canExecute()

測試此程序是否允許執(zhí)行此文件。這是最好的努力結果,確定的唯一方法就是實際嘗試操作。

返回值:

如果能執(zhí)行返回 true ,否則返回 false。

public boolean canRead()

測試該文件在當前環(huán)境是否可讀。

返回值:

如果可讀返回 true ,否則返回 false。

public boolean canWrite()

測試該文件在當前環(huán)境是否可寫。

返回值:

如果可寫返回 true,否則返回 false。

public int compareTo(File another)

返回此文件和另一文件的路徑的相對排序順序。排序依賴于平臺。

參數:

another 與該文件比較的文件。

返回值:

通過比較兩個路徑確定的一個 int 值??杀容^的值在 Comparable 接口中描述。

public boolean createNewFile()

根據文件中存儲的路徑信息在文件系統上創(chuàng)建一個新的空文件。如果創(chuàng)建一個文件返回 true,如果文件已經存在返回 false。注意,即使這個文件不是一個文件(因為它是一個目錄)也會返回 false。

這個方法通常不是有用的。如果創(chuàng)建一個臨時文件的話使用 createTempFile(String ,String)方法代替。如果是讀/寫文件的話,用 FileInputStream,FileOutputStream,或是 RandmAccessFile,所有的這些都能創(chuàng)建文件。

注意,如果這個文件已經存在這個方法是不會拋出 IO 異常的,即使它不是一個常規(guī)的文件。用戶應該始終檢查返回值,此外還應調用 isFile()方法。

返回值:

如果文件被創(chuàng)建返回 ture ,如果文件已經存在返回 false。

異常:

IO 異常 如果不能創(chuàng)建文件。

public static File createTempFile(String prefix,String suffix,File directory)

在指定的目錄創(chuàng)建一個文件,用指定的前綴和后綴作為文件名的一部分。如果后綴為空的話,則使用 .tmp。

注意,這個方法不會調用 deleteOnExit()方法,在手動調用該方法之前,請參閱該方法的文檔。

參數:

prefix 空文件名的前綴

suffix 空文件名的后綴

directory 要寫入臨時文件的位置,如果為 null 的話就是默認位置,這個默認位置是來自于
“java.io.tmpdir” 系統屬性??赡苄枰獙⒋藢傩栽O置為現有的可寫目錄,以使此方法
正常工作。

返回值:

臨時文件

異常:

參數非法 當前綴的長度小 3。

IO 異常 寫入文件是出錯。

public static File createTempFile(String prefix,String suffix)

創(chuàng)建一個臨時的空文件,使用指定的前綴和后綴作為文件名的一部分。如果后綴為空的話,則使用 .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()

返回一個使用該文件的絕對路徑創(chuàng)建的新的文件。等同于 new File(this.getAbsoluPath())。

public String getAbsolutePath()

返回該文件的絕對路徑。絕對路徑是開始于文件系統的根目錄。在 Android 中只有一個根目錄:/

絕對路徑的一個常用方法是將路徑作為命令行參數傳遞給進程,要移除相對路徑所隱藏的要求,該子目錄必須與其父目錄有相同的工作目錄。

public File getCanonicalFile()

返回用該文件的規(guī)范路徑創(chuàng)建的新的文件。等同于 new File(this.getCanonicalPath())。

返回值:

用該文件的規(guī)范路徑創(chuàng)建的新的文件。

異常:

IO 異常 發(fā)生 I/O 錯誤時。

public String getCanonicalPath()

返回該文件的規(guī)范路徑。絕對路徑是從文件系統的根開始的。規(guī)范路徑是具有符號鏈接和引用 “.” 或 “..” 的絕對路徑,如果路徑元素不存在(或不可搜索),則將規(guī)范化解釋為文本操作之間存在沖突(“a/../b” 的位置是 “b”,即使 “a” 不存在)。

大多數的用戶應該使用 getAbsolutePath()代替它。規(guī)范的路徑需要大量的計算,而且一般都是沒用的。規(guī)范路徑最常見的用法是,通過比較規(guī)范路徑測試兩個路徑是否指向同一個文件。

使用規(guī)范路徑可能是有害的,因為規(guī)范化刪除了符號鏈接。假設一個符號鏈接是有原因的,這是明智的,因為鏈接可能需要改變。規(guī)范除去了這個間接層。好的代碼一般避免緩存規(guī)范化路徑。

返回值:

文件的規(guī)范化路徑

異常:

IO 異常 當 IO 出現異常時。

public long getFreeSpace()

返回包含此路徑的分區(qū)上的空空余字節(jié)數。返回 0 當路徑不存在時。

注意,這可能是一個樂觀的高估,不應被視為一個保證應用程序實際上可以寫這么多字節(jié)。

public String getName()

返回由該文件表示的文件或目錄的名稱。

返回值:

該文件的名稱或是一個空的字符串當該文件的路徑沒有名稱部分。

public String getParent()

返回該文件的父文件的路徑名稱。

返回值:

該文件的父文件的路徑名稱或 null。

public File getParentFile()

返回由該文件的父文件的路徑名稱創(chuàng)建的一個新文件。這個路徑直到但不包括最后一個名稱。當該文件沒有父文件時返回 null。

返回值:

由該文件的父文件的路徑名稱創(chuàng)建的新文件,或是 null。

public String getPath()

返回文件的路徑。

public long getTotalSpace()

返回包含此路徑的分區(qū)上的全部字節(jié)數。返回 0 如果文件不存在。

public long getUsableSpace()

返回包含此路徑的分區(qū)上的可用字節(jié)數。返回 0 當此路徑不存在時。

注意,這可能是一個樂觀的高估,不應被視為一個保證應用程序實際上可以寫這么多字節(jié)。在 Android(或是其他以 Unix 為基礎的系統),此方法返回非 root 用戶的可用字節(jié)數,不管你是否實際運行為root,也不管用戶應用了其他任何配額或其他限制。(getFreeSpace 方法返回的字節(jié)數可能包含 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()

返回文件的字節(jié)長度。文件不存在返回 0.如果是目錄則結果是未定義。

返回值:

文件的字節(jié)數。

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()

由該文件創(chuàng)建一個目錄,假設它的父目錄是存在的。如果想要創(chuàng)建不存在的父目錄使用 mkdirs()。

注意,當出現錯誤時這個方法不會拋出異常。用戶必須檢查返回值。 注意,當目錄存在時返回 false。如果在返回時想要知道該文件是否存在,使用(f.mkdir() || f.isDirectory())或者忽略該方法的返回值直接調用 isDirectory().

返回值:

如果目錄被創(chuàng)建返回 ture,如果發(fā)生錯誤或是目錄已經存在返回 false。

public boolean mkdirs()

由該文件創(chuàng)建一個目錄,并且創(chuàng)建所有必須但不存在的父目錄。如果不想創(chuàng)建父目錄使用 mkdir()。

注意,當出現錯誤時該方法不會拋出異常。用戶必須要檢查返回值。注意,如果當目錄存在時返回 false。如果在返回時想知道目錄是否存在,使用(f.mkdirs() || f.isDirctory())或者忽略該方法的返回值,直接調用 isDirctory().

返回值:

如果目錄被創(chuàng)建返回 ture,如果發(fā)生錯誤或是目錄已經存在返回 false。

pubic boolean renameTo(File newPath)

以新路徑重命名文件。當兩個都是文件或都是目錄時該操作才能生效。

經常會發(fā)生一些錯誤。 一些更容易發(fā)生的錯誤包括:

  • 在包含源和目標路徑的目錄上寫入權限是必須的。
  • 兩個路徑的父路徑的查詢權限是必須的。
  • 兩個路徑都要在同一個掛載點上。在 Android 中,應用程序最有可能碰到這個限制,當試圖在內部存儲和 SD 卡之間復制時。

注意,當發(fā)生錯誤時該方法不會拋出異常。用戶必須檢查返回值。

參數:

newPath 新的路徑

返回值:

成功時返回 true。

public boolean setExecutable(boolean executable)

等同于 setExecutable(executable,true).

public boolean setExecutable(boolean executable,boolean ownerOnly)

操作此文件指定的抽象路徑的執(zhí)行權限。

注意,當出現錯誤時該方法不會拋出異常,用戶必須檢查返回值。

參數:

executable 為 true 時允許執(zhí)行權限,否則不允許。
ownerOnly 為 true 時只有自己有操作執(zhí)行權限,否則就是所有人。如果底層系統不區(qū)分所有者和其他用戶,則該操作將應用于每個人,而不考慮該值。

返回值:

當且僅當操作成功時返回 true。如果用戶沒有權限去更改該抽象路徑的訪問權限則操作失敗。如果底層文件系統不支持執(zhí)行權限或是 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 時僅自己可操作讀的權限,否則是所有人。 如果底層系統不區(qū)分所有者和其他用戶,則該操作將應用于每個人,而不考慮該值。

*返回值:

當且僅當操作成功時返回 true。如果用戶沒有權限去更改該抽象路徑的訪問權限則操作失敗。如果底層文件系統不支持執(zhí)行權限或是 readable 的值為 false 時操作失敗。

public boolean setWritable(boolean write,boolean ownerOnly)

操作此文件指定的抽象路徑的寫入權限。

*參數:

writable 為 ture 時允許寫的權限,否則不允許。
ownerOnly 為 true 時僅自己可操作寫的權限,否則是所有人。 如果底層系統不區(qū)分所有者和其他用戶,則該操作將應用于每個人,而不考慮該值。

返回值:

當且僅當操作成功時返回 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 時。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容