JavaTM 2 Platform
Standard Ed. 6

java.io
類別 File

java.lang.Object
  繼承者 java.io.File
所有已實作的介面:
Serializable, Comparable<File>

public class File
extends Object
implements Serializable, Comparable<File>

檔案和目錄路徑名的抽象表示形式。

使用者介面和作業系統使用與系統相關的路徑名字元串 來命名檔案和目錄。此類別呈現分層路徑名的一個抽象的、與系統無關的視圖。抽象路徑名 有兩個元件:

  1. 一個可選的與系統有關的前綴 字元串,比如磁碟符,"/" 表示 UNIX 中的根目錄,"\\\\" 表示 Microsoft Windows UNC 路徑名。
  2. 零個或更多字元串名稱 的序列。
抽象路徑名中的第一個名稱是目錄名,對於 Microsoft Windows UNC 路徑名則是主機名。抽象路徑名中第一個名稱之後的每個名稱表示一個目錄;最後一個名稱既可以表示目錄,也可以表示檔案。 抽象路徑名沒有前綴和名稱序列。

路徑名字元串與抽象路徑名之間的轉換與系統有關。將抽象路徑名轉換為路徑名字元串時,每個名稱與下一個名稱之間用一個預設分隔符 隔開。預設名稱分隔符由系統屬性 file.separator 定義,可通過此類別的公共靜態欄位 separatorseparatorChar 使其可用。將路徑名字元串轉換為抽象路徑名時,可以使用預設名稱分隔符或者底層系統支持的任何其他名稱分隔符來分隔其中的名稱。

無論是抽象路徑名還是路徑名字元串,都可以是絕對 路徑名或相對 路徑名。絕對路徑名是完整的路徑名,不需要任何其他資訊就可以定位它所表示的檔案。相反,相對路徑名必須使用取自其他路徑名的資訊進行解釋。預設情況下,java.io 套件中的類別總是根據當前使用者目錄來解析相對路徑名。此目錄由系統屬性 user.dir 指定,通常是 Java 虛擬機器的調用目錄。

調用此類別的 getParent() 方法可以獲取抽象路徑名的 路徑名,它由路徑名前綴以及路徑名名稱序列中的每個名稱(最後一個除外)組成。對於任何具有絕對抽象路徑名的 File 物件,如果其絕對抽象路徑名以某個目錄的絕對路徑名開頭,那麼該目錄的絕對路徑名是該 File 物件的祖先。例如,抽象路徑名 "/usr" 表示的目錄是路徑名 "/usr/local/bin" 所表示目錄的一個祖先。

在處理 UNIX 平臺的根目錄,以及 Microsoft Windows 平臺的磁碟符、根目錄和 UNC 路徑名時,將用到前綴這一概念。如下所示:

此類別的實例可能表示(也可能不表示)實際檔案系統物件,如檔案或目錄。如果它表示這種物件,那麼該物件駐留在一個分區 中。分區是檔案系統特定於作業系統的存儲分區。一個存儲設備(例如,物理磁碟驅動器、閃存、CD-ROM)可以包含多個分區。物件(如果有)將駐留在此路徑名(絕對形式)某個祖先指定的分區上。

檔案系統可以實作對實際檔案系統物件上的某些操作(比如,讀、寫、執行)進行限制。這些限制統稱為存取權限。檔案系統可以對一個物件設置多個存取權限。例如,一個設置可能適用於物件的所有者,另一個設置則可能適用於所有其他使用者。物件上的存取權限可能導致此類別的某些方法執行失敗。

File 類別的實例是不可變的;也就是說,一旦創建,File 物件表示的抽象路徑名將永不改變。

從以下版本開始:
JDK1.0
另請參見:
序列化表格

欄位摘要
static String pathSeparator
          與系統有關的路徑分隔符,為了方便,它被表示為一個字元串。
static char pathSeparatorChar
          與系統有關的路徑分隔符。
static String separator
          與系統有關的預設名稱分隔符,為了方便,它被表示為一個字元串。
static char separatorChar
          與系統有關的預設名稱分隔符。
 
建構子摘要
File(File parent, String child)
          根據 parent 抽象路徑名和 child 路徑名字元串創建一個新 File 實例。
File(String pathname)
          通過將給定路徑名字元串轉換為抽象路徑名來創建一個新 File 實例。
File(String parent, String child)
          根據 parent 路徑名字元串和 child 路徑名字元串創建一個新 File 實例。
File(URI uri)
          通過將給定的 file: URI 轉換為一個抽象路徑名來創建一個新的 File 實例。
 
方法摘要
 boolean canExecute()
          測試應用程序是否可以執行此抽象路徑名表示的檔案。
 boolean canRead()
          測試應用程序是否可以讀取此抽象路徑名表示的檔案。
 boolean canWrite()
          測試應用程序是否可以修改此抽象路徑名表示的檔案。
 int compareTo(File pathname)
          按字母順序比較兩個抽象路徑名。
 boolean createNewFile()
          當且僅當不存在具有此抽象路徑名指定名稱的檔案時,不可分地創建一個新的空檔案。
static File createTempFile(String prefix, String suffix)
          在預設臨時檔案目錄中創建一個空檔案,使用給定前綴和後綴產生其名稱。
static File createTempFile(String prefix, String suffix, File directory)
           在指定目錄中創建一個新的空檔案,使用給定的前綴和後綴字元串產生其名稱。
 boolean delete()
          刪除此抽象路徑名表示的檔案或目錄。
 void deleteOnExit()
          在虛擬機器終止時,請求刪除此抽象路徑名表示的檔案或目錄。
 boolean equals(Object obj)
          測試此抽象路徑名與給定物件是否相等。
 boolean exists()
          測試此抽象路徑名表示的檔案或目錄是否存在。
 File getAbsoluteFile()
          返回此抽象路徑名的絕對路徑名形式。
 String getAbsolutePath()
          返回此抽象路徑名的絕對路徑名字元串。
 File getCanonicalFile()
          返回此抽象路徑名的規範形式。
 String getCanonicalPath()
          返回此抽象路徑名的規範路徑名字元串。
 long getFreeSpace()
          返回此抽象路徑名指定的分區中未分派的位元組數。
 String getName()
          返回由此抽象路徑名表示的檔案或目錄的名稱。
 String getParent()
          返回此抽象路徑名父目錄的路徑名字元串;如果此路徑名沒有指定父目錄,則返回 null
 File getParentFile()
          返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null
 String getPath()
          將此抽象路徑名轉換為一個路徑名字元串。
 long getTotalSpace()
          返回此抽象路徑名指定的分區大小。
 long getUsableSpace()
          返回此抽象路徑名指定的分區上可用於此虛擬機器的位元組數。
 int hashCode()
          計算此抽象路徑名的雜湊碼。
 boolean isAbsolute()
          測試此抽象路徑名是否為絕對路徑名。
 boolean isDirectory()
          測試此抽象路徑名表示的檔案是否是一個目錄。
 boolean isFile()
          測試此抽象路徑名表示的檔案是否是一個標準檔案。
 boolean isHidden()
          測試此抽象路徑名指定的檔案是否是一個隱藏檔案。
 long lastModified()
          返回此抽象路徑名表示的檔案最後一次被修改的時間。
 long length()
          返回由此抽象路徑名表示的檔案的長度。
 String[] list()
          返回一個字元串陣列,這些字元串指定此抽象路徑名表示的目錄中的檔案和目錄。
 String[] list(FilenameFilter filter)
          返回一個字元串陣列,這些字元串指定此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。
 File[] listFiles()
          返回一個抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中的檔案。
 File[] listFiles(FileFilter filter)
          返回抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。
 File[] listFiles(FilenameFilter filter)
          返回抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。
static File[] listRoots()
          列出可用的檔案系統根。
 boolean mkdir()
          創建此抽象路徑名指定的目錄。
 boolean mkdirs()
          創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。
 boolean renameTo(File dest)
          重新命名此抽象路徑名表示的檔案。
 boolean setExecutable(boolean executable)
          設置此抽象路徑名所有者執行權限的一個便捷方法。
 boolean setExecutable(boolean executable, boolean ownerOnly)
          設置此抽象路徑名的所有者或所有使用者的執行權限。
 boolean setLastModified(long time)
          設置此抽象路徑名指定的檔案或目錄的最後一次修改時間。
 boolean setReadable(boolean readable)
          設置此抽象路徑名所有者讀權限的一個便捷方法。
 boolean setReadable(boolean readable, boolean ownerOnly)
          設置此抽象路徑名的所有者或所有使用者的讀權限。
 boolean setReadOnly()
          標記此抽象路徑名指定的檔案或目錄,從而只能對其進行讀操作。
 boolean setWritable(boolean writable)
          設置此抽象路徑名所有者寫權限的一個便捷方法。
 boolean setWritable(boolean writable, boolean ownerOnly)
          設置此抽象路徑名的所有者或所有使用者的寫權限。
 String toString()
          返回此抽象路徑名的路徑名字元串。
 URI toURI()
          建構一個表示此抽象路徑名的 file: URI。
 URL toURL()
          已過時。 此方法不會自動轉義 URL 中的非法字元。建議新的程式碼使用以下方式將抽象路徑名轉換為 URL:首先通過 toURI 方法將其轉換為 URI,然後通過 URI.toURL 方法將 URI 裝換為 URL。
 
從類別 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait
 

欄位詳細資訊

separatorChar

public static final char separatorChar
與系統有關的預設名稱分隔符。此欄位被初始化為包含系統屬性 file.separator 值的第一個字元。在 UNIX 系統上,此欄位的值為 '/';在 Microsoft Windows 系統上,它為 '\\'

另請參見:
System.getProperty(java.lang.String)

separator

public static final String separator
與系統有關的預設名稱分隔符,為了方便,它被表示為一個字元串。此字元串只包含一個字元,即 separatorChar


pathSeparatorChar

public static final char pathSeparatorChar
與系統有關的路徑分隔符。此欄位被初始為包含系統屬性 path.separator 值的第一個字元。此字元用於分隔以路徑列表 形式給定的檔案序列中的檔案名。在 UNIX 系統上,此欄位為 ':';在 Microsoft Windows 系統上,它為 ';'

另請參見:
System.getProperty(java.lang.String)

pathSeparator

public static final String pathSeparator
與系統有關的路徑分隔符,為了方便,它被表示為一個字元串。此字元串只包含一個字元,即 pathSeparatorChar

建構子詳細資訊

File

public File(String pathname)
通過將給定路徑名字元串轉換為抽象路徑名來創建一個新 File 實例。如果給定字元串是空字元串,那麼結果是空抽象路徑名。

參數:
pathname - 路徑名字元串
拋出:
NullPointerException - 如果 pathname 參數為 null

File

public File(String parent,
            String child)
根據 parent 路徑名字元串和 child 路徑名字元串創建一個新 File 實例。

如果 parentnull,則創建一個新的 File 實例,這與調用以給定 child 路徑名字元串作為參數的單參數 File 建構子效果一樣。

否則,parent 路徑名字元串用於表示目錄,child 路徑名字元串用於表示目錄或檔案。如果 child 路徑名字元串是絕對路徑名,則用與系統有關的方式將它轉換為一個相對路徑名。如果 parent 是空字元串,則通過將 child 轉換為抽象路徑名,並根據與系統有關的預設目錄解析結果來創建新的 File 實例。否則,將每個路徑名字元串轉換為一個抽象路徑名,並根據父抽象路徑名解析子抽象路徑名。

參數:
parent - 父路徑名字元串
child - 子路徑名字元串
拋出:
NullPointerException - 如果 childnull

File

public File(File parent,
            String child)
根據 parent 抽象路徑名和 child 路徑名字元串創建一個新 File 實例。

如果 parentnull,則創建一個新的 File 實例,這與調用給定 child 路徑名字元串的單參數 File 建構子的效果一樣。

否則,parent 抽象路徑名用於表示目錄,child 路徑名字元串用於表示目錄或檔案。如果 child 路徑名字元串是絕對路徑名,則用與系統有關的方式將它轉換為一個相對路徑名。如果 parent 是空抽象路徑名,則通過將 child 轉換為抽象路徑名,並根據與系統有關的預設目錄解析結果來創建新的 File 實例。否則,將每個路徑名字元串轉換為一個抽象路徑名,並根據父抽象路徑名解析子抽象路徑名。

參數:
parent - 父抽象路徑名
child - 子路徑名字元串
拋出:
NullPointerException - 如果 childnull

File

public File(URI uri)
通過將給定的 file: URI 轉換為一個抽象路徑名來創建一個新的 File 實例。

file: URI 的具體形式與系統有關,因此,由此建構子執行的轉換也與系統有關。

對於某個給定抽象路徑名 f,可以保證:

new File( f.toURI()).equals( f.getAbsoluteFile())
只要原始抽象路徑名、URI 和新抽象路徑名都是在同一 Java 虛擬機器(或者它的不同調用)中創建的。但是,當在某一作業系統上的虛擬機器中創建的 file: URI 在不同作業系統上的虛擬機器中被轉換為抽象路徑名時,這種關係通常是不成立的。

參數:
uri - 一個絕對分層 URI,由一個等於 "file" 的 scheme、非空(null)的 path 元件,以及未定義的 authority、query 和 fragment 元件組成
拋出:
NullPointerException - 如果 urinull
IllegalArgumentException - 如果關於參數的前提不成立
從以下版本開始:
1.4
另請參見:
toURI(), URI
方法詳細資訊

getName

public String getName()
返回由此抽象路徑名表示的檔案或目錄的名稱。該名稱是路徑名名稱序列中的最後一個名稱。如果路徑名名稱序列為空,則返回空字元串。

返回:
此抽象路徑名表示的檔案或目錄的名稱;如果路徑名的名稱序列為空,則返回空字元串

getParent

public String getParent()
返回此抽象路徑名父目錄的路徑名字元串;如果此路徑名沒有指定父目錄,則返回 null

抽象路徑名的 路徑名由路徑名的前綴(如果有),以及路徑名名稱序列中最後一個名稱以外的所有名稱組成。如果名稱序列為空,那麼該路徑名沒有指定父目錄。

返回:
此抽象路徑名指定父目錄的路徑名字元串;如果此路徑名沒有指定父目錄,則返回 null

getParentFile

public File getParentFile()
返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null

抽象路徑名的 路徑名由路徑名的前綴(如果有),以及路徑名名稱序列中最後一個名稱以外的所有名稱組成。如果名稱序列為空,那麼該路徑名沒有指定父目錄。

返回:
此抽象路徑名指定父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null
從以下版本開始:
1.2

getPath

public String getPath()
將此抽象路徑名轉換為一個路徑名字元串。所得字元串使用預設名稱分隔符分隔名稱序列中的名稱。

返回:
此抽象路徑名的字元串形式

isAbsolute

public boolean isAbsolute()
測試此抽象路徑名是否為絕對路徑名。絕對路徑名的定義與系統有關。在 UNIX 系統上,如果路徑名的前綴是 "/",那麼該路徑名是絕對路徑名。在 Microsoft Windows 系統上,如果路徑名的前綴是後跟 "\\" 的磁碟符,或者是 "\\\\",那麼該路徑名是絕對路徑名。

返回:
如果此抽象路徑名是絕對路徑名,則返回 true;否則返回 false

getAbsolutePath

public String getAbsolutePath()
返回此抽象路徑名的絕對路徑名字元串。

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

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

getAbsoluteFile

public File getAbsoluteFile()
返回此抽象路徑名的絕對路徑名形式。等同於 new File(this.getAbsolutePath())

返回:
絕對抽象路徑名,它與此抽象路徑名表示相同的檔案或目錄
拋出:
SecurityException - 如果無法存取所需的系統屬性值。
從以下版本開始:
1.2

getCanonicalPath

public String getCanonicalPath()
                        throws IOException
返回此抽象路徑名的規範路徑名字元串。

規範路徑名是絕對路徑名,並且是惟一的。規範路徑名的準確定義與系統有關。如有必要,此方法首先將路徑名轉換為絕對路徑名,這與調用 getAbsolutePath() 方法的效果一樣,然後用與系統相關的方式將它映射到其惟一路徑名。這通常涉及到從路徑名中移除多餘的名稱(比如 ".""..")、解析符號連接(對於 UNIX 平臺),以及將驅動器號轉換為標準大小寫形式(對於 Microsoft Windows 平臺)。

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

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

getCanonicalFile

public File getCanonicalFile()
                      throws IOException
返回此抽象路徑名的規範形式。等同於 new File(this.getCanonicalPath())

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

toURL

@Deprecated
public URL toURL()
          throws MalformedURLException
已過時。 此方法不會自動轉義 URL 中的非法字元。建議新的程式碼使用以下方式將抽象路徑名轉換為 URL:首先通過 toURI 方法將其轉換為 URI,然後通過 URI.toURL 方法將 URI 裝換為 URL。

將此抽象路徑名轉換為一個 file: URL。該 URL 的具體形式與系統有關。如果可以確定此抽象路徑名表示的檔案是一個目錄,那麼所得 URL 將以斜槓結束。

返回:
表示等價檔案 URL 的 URL 物件
拋出:
MalformedURLException - 如果無法將路徑解析為 URL
從以下版本開始:
1.2
另請參見:
toURI(), URI, URI.toURL(), URL

toURI

public URI toURI()
建構一個表示此抽象路徑名的 file: URI。

該 URI 的具體形式與系統有關。如果可以確定此抽象路徑名表示的檔案是一個目錄,那麼所得 URI 將以斜槓結束。

對於某個給定抽象路徑名 f,可保證:

new File( f.toURI()).equals( f.getAbsoluteFile())
只要原始抽象路徑名、URI 和新抽象路徑名都是在同一 Java 虛擬機器(或者它的不同調用)中創建的。但是,由於抽象路徑名與系統有關的特性,當在某一作業系統上的虛擬機器中創建的 file: URI 在不同作業系統上的虛擬機器中被轉換為抽象路徑名時,這種關係通常是不成立的。

返回:
一個絕對分層 URI,由一個等於 "file" 的 scheme、表示此抽象路徑名的 path,以及未定義的 authority、query 和 fragment 元件組成
拋出:
SecurityException - 如果不能存取請求的系統屬性值。
從以下版本開始:
1.4
另請參見:
File(java.net.URI), URI, URI.toURL()

canRead

public boolean canRead()
測試應用程序是否可以讀取此抽象路徑名表示的檔案。

返回:
當且僅當此抽象路徑名指定的檔案存在 可被應用程序讀取時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對檔案進行讀存取

canWrite

public boolean canWrite()
測試應用程序是否可以修改此抽象路徑名表示的檔案。

返回:
當且僅當檔案系統實際包含此抽象路徑名表示的檔案 允許應用程序對該檔案進行寫入時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對檔案進行寫存取

exists

public boolean exists()
測試此抽象路徑名表示的檔案或目錄是否存在。

返回:
當且僅當此抽象路徑名表示的檔案或目錄存在時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對檔案或目錄進行寫存取

isDirectory

public boolean isDirectory()
測試此抽象路徑名表示的檔案是否是一個目錄。

返回:
當且僅當此抽象路徑名表示的檔案存在 是一個目錄時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對檔案進行讀存取

isFile

public boolean isFile()
測試此抽象路徑名表示的檔案是否是一個標準檔案。如果該檔案不是一個目錄,並且滿足其他與系統有關的標準,那麼該檔案是標準 檔案。由 Java 應用程序創建的所有非目錄檔案一定是標準檔案。

返回:
當且僅當此抽象路徑名表示的檔案存在 是一個標準檔案時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對檔案進行讀存取

isHidden

public boolean isHidden()
測試此抽象路徑名指定的檔案是否是一個隱藏檔案。隱藏 的具體定義與系統有關。在 UNIX 系統上,如果檔案名以句點字元 ('.') 開頭,則認為該檔案被隱藏。在 Microsoft Windows 系統上,如果在檔案系統中檔案被標記為隱藏,則認為該檔案被隱藏。

返回:
當且僅當此抽象路徑名表示的檔案根據底層平臺約定是隱藏檔案時,返回 true
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對檔案進行讀存取
從以下版本開始:
1.2

lastModified

public long lastModified()
返回此抽象路徑名表示的檔案最後一次被修改的時間。

返回:
表示檔案最後一次被修改的時間的 long 值,用與時間點(1970 年 1 月 1 日,00:00:00 GMT)之間的毫秒數表示;如果該檔案不存在,或者發生 I/O 錯誤,則返回 0L
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對檔案進行讀存取

length

public long length()
返回由此抽象路徑名表示的檔案的長度。如果此路徑名表示一個目錄,則返回值是不確定的。

返回:
此抽象路徑名表示的檔案的長度,以位元組為單位;如果檔案不存在,則返回 0L。對於表示特定於系統的實體(比如設備或管道)的路徑名,某些作業系統可能返回 0L
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對檔案進行讀存取

createNewFile

public boolean createNewFile()
                      throws IOException
當且僅當不存在具有此抽象路徑名指定名稱的檔案時,不可分地創建一個新的空檔案。檢查檔案是否存在,若不存在則創建該檔案,這是單個操作,對於其他所有可能影響該檔案的檔案系統活動來說,該操作是不可分的。

註:此方法不應該 用於檔案鎖定,因為所得協議可能無法可靠地工作。應該使用 FileLock 機制替代。

返回:
如果指定的檔案不存在並成功地創建,則返回 true;如果指定的檔案已經存在,則返回 false
拋出:
IOException - 如果發生 I/O 錯誤
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對檔案進行寫存取
從以下版本開始:
1.2

delete

public boolean delete()
刪除此抽象路徑名表示的檔案或目錄。如果此路徑名表示一個目錄,則該目錄必須為空才能刪除。

返回:
當且僅當成功刪除檔案或目錄時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒絕對檔案進行刪除存取

deleteOnExit

public void deleteOnExit()
在虛擬機器終止時,請求刪除此抽象路徑名表示的檔案或目錄。 檔案(或目錄)將以與註冊相反的順序刪除。調用此方法刪除已註冊為刪除的檔案或目錄無效。根據 Java 語言規範中的定義,只有在虛擬機器正常終止時,才會嘗試執行刪除操作。

一旦請求了刪除操作,就無法取消該請求。所以應小心使用此方法。

註:此方法不應該 用於檔案鎖定,因為所得協議可能無法可靠地工作。應該使用 FileLock 設施替代。

拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkDelete(java.lang.String) 方法拒絕對檔案進行刪除存取
從以下版本開始:
1.2
另請參見:
delete()

list

public String[] list()
返回一個字元串陣列,這些字元串指定此抽象路徑名表示的目錄中的檔案和目錄。

如果此抽象路徑名不表示一個目錄,那麼此方法將返回 null。否則返回一個字元串陣列,每個陣列元素對應目錄中的每個檔案或目錄。表示目錄本身及其父目錄的名稱不包括在結果中。每個字元串是一個檔案名,而不是一條完整路徑。

不保證所得陣列中的相同字元串將以特定順序出現,特別是不保證它們按字母順序出現。

返回:
字元串陣列,這些字元串指定此抽象路徑名表示的目錄中的檔案和目錄。如果目錄為空,那麼陣列也將為空。如果此抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對目錄進行讀存取

list

public String[] list(FilenameFilter filter)
返回一個字元串陣列,這些字元串指定此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。除了返回陣列中的字元串必須滿足過濾器外,此方法的行為與 list() 方法相同。如果給定 filternull,則接受所有名稱。否則,當且僅當在此抽象路徑名及其表示的目錄中的檔案名或目錄名上調用過濾器的 FilenameFilter.accept(java.io.File, java.lang.String) 方法返回 true 時,該名稱才滿足過濾器。

參數:
filter - 檔案名過濾器
返回:
字元串陣列,這些字元串指定此抽象路徑名表示的目錄中給定 filter 能接受的檔案和目錄。如果目錄為空,或者沒有名稱被過濾器接受,那麼該陣列將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對目錄進行讀存取

listFiles

public File[] listFiles()
返回一個抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中的檔案。

如果此抽象路徑名不表示一個目錄,那麼此方法將返回 null。否則返回一個 File 物件陣列,每個陣列元素對應目錄中的每個檔案或目錄。表示目錄本身及其父目錄的名稱不包括在結果中。得到的每個抽象路徑名都是根據此抽象路徑名,使用 File(File, String) 建構子建構的。所以,如果此路徑名是絕對路徑名,那麼得到的每個路徑名都是絕對路徑名;如果此路徑名是相對路徑名,那麼得到的每個路徑名都是相對於同一目錄的路徑名。

不保證所得陣列中的相同字元串將以特定順序出現,特別是不保證它們按字母順序出現。

返回:
抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中的檔案和目錄。如果目錄為空,那麼陣列也將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對目錄進行讀存取
從以下版本開始:
1.2

listFiles

public File[] listFiles(FilenameFilter filter)
返回抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。除了返回陣列中的路徑名必須滿足過濾器外,此方法的行為與 listFiles() 方法相同。如果給定 filternull,則接受所有路徑名。否則,當且僅當在此抽象路徑名及其表示的目錄中的檔案名或目錄名上調用過濾器的 FilenameFilter.accept(java.io.File, java.lang.String) 方法返回 true 時,該路徑名才滿足過濾器。

參數:
filter - 檔案名過濾器
返回:
抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中的檔案和目錄。如果目錄為空,那麼陣列也將為空。如果此抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對目錄進行讀存取
從以下版本開始:
1.2

listFiles

public File[] listFiles(FileFilter filter)
返回抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的檔案和目錄。除了返回陣列中的路徑名必須滿足過濾器外,此方法的行為與 listFiles() 方法相同。如果給定 filternull,則接受所有路徑名。否則,當且僅當在路徑名上調用過濾器的 FileFilter.accept(java.io.File) 方法返回 true 時,該路徑名才滿足過濾器。

參數:
filter - 檔案過濾器
返回:
抽象路徑名陣列,這些路徑名表示此抽象路徑名表示的目錄中的檔案和目錄。如果目錄為空,那麼陣列也將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對目錄進行讀存取
從以下版本開始:
1.2

mkdir

public boolean mkdir()
創建此抽象路徑名指定的目錄。

返回:
當且僅當已創建目錄時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允許創建指定的目錄

mkdirs

public boolean mkdirs()
創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。注意,此操作失敗時也可能已經成功地創建了一部分必需的父目錄。

返回:
當且僅當已創建目錄以及所有必需的父目錄時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法不允許驗證指定目錄和所有必需的父目錄是否存在;或者 SecurityManager.checkWrite(java.lang.String) 方法不允許創建指定的目錄和所有必需的父目錄

renameTo

public boolean renameTo(File dest)
重新命名此抽象路徑名表示的檔案。

此方法行為的許多方面都是與平臺有關的:重命名操作無法將一個檔案從一個檔案系統移動到另一個檔案系統,該操作不是不可分的,如果已經存在具有目標抽象路徑名的檔案,那麼該操作可能無法獲得成功。應該始終檢查返回值,以確保重命名操作成功。

參數:
dest - 指定檔案的新抽象路徑名
返回:
當且僅當重命名成功時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對原路徑名和新路徑名進行寫存取
NullPointerException - 如果參數 destnull

setLastModified

public boolean setLastModified(long time)
設置此抽象路徑名指定的檔案或目錄的最後一次修改時間。

所有平臺都支持將檔案修改時間設置為最接近的秒數,而且一些平臺會提供更精確的值。該參數將被截取,以滿足受支持的精度。如果該操作成功,並且沒有在檔案上發生其他干擾操作,則下一次調用 lastModified() 方法將返回傳遞給此方法的 time 參數(可能被截取)。

參數:
time - 新的最後一次修改時間,用與時間點(1970 年 1 月 1 日,00:00:00 GMT)之間的毫秒數表示
返回:
當且僅當該操作成功時,返回 true;否則返回 false
拋出:
IllegalArgumentException - 如果該參數為負
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對指定檔案進行寫存取
從以下版本開始:
1.2

setReadOnly

public boolean setReadOnly()
標記此抽象路徑名指定的檔案或目錄,從而只能對其進行讀操作。調用此方法後,可以保證在被刪除或被標記為允許寫存取之前,檔案或目錄不會發生更改。是否可以刪除某個只讀檔案或目錄則取決於底層系統。

返回:
當且僅當該操作成功時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對指定檔案進行寫存取
從以下版本開始:
1.2

setWritable

public boolean setWritable(boolean writable,
                           boolean ownerOnly)
設置此抽象路徑名的所有者或所有使用者的寫權限。

參數:
writable - 如果為 true,則設置允許寫操作的存取權限;如果為 false,則不允許寫操作。
ownerOnly - 如果為 true,則寫權限只適用於所有者的寫權限;否則適用於所有使用者。如果底層檔案系統不能區分所有者寫權限與其他寫權限,那麼無論該參數為何值,寫權限將適用於所有使用者。
返回:
當且僅當操作成功時返回 true。如果使用者不具有更改此抽象路徑名存取權限的權限,那麼操作將失敗。
拋出:
SecurityException - 如果安全管理器存在且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對指定檔案進行寫存取。
從以下版本開始:
1.6

setWritable

public boolean setWritable(boolean writable)
設置此抽象路徑名所有者寫權限的一個便捷方法。

此方法 file.setWritable(arg) 形式的調用與以下調用的行為完全相同:

     file.setWritable(arg, true) 

參數:
writable - 如果為 true,則設置允許寫操作的存取權限;如果為 false,則不允許寫操作。
返回:
當且僅當操作成功時返回 true。如果使用者不具有更改此抽象路徑名存取權限的權限,那麼操作將失敗。
拋出:
SecurityException - 如果安全管理器存在且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對檔案進行寫存取。
從以下版本開始:
1.6

setReadable

public boolean setReadable(boolean readable,
                           boolean ownerOnly)
設置此抽象路徑名的所有者或所有使用者的讀權限。

參數:
readable - 如果為 true,則設置允許讀操作的存取權限;如果為 false,則不允許讀操作。
ownerOnly - 如果為 true,則讀權限只適用於所有者的讀權限;否則適用於所有使用者。如果底層檔案系統不能區分所有者讀權限與其他讀權限,那麼無論該參數為何值,讀權限將適用於所有使用者。
返回:
當且僅當操作成功時返回 true。如果使用者不具有更改此抽象路徑名存取權限的權限,那麼操作將失敗。如果 readablefalse,並且底層檔案系統不實作讀權限,那麼操作也將失敗。
拋出:
SecurityException - 如果安全管理器存在且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對檔案進行寫存取。
從以下版本開始:
1.6

setReadable

public boolean setReadable(boolean readable)
設置此抽象路徑名所有者讀權限的一個便捷方法。

此方法 file.setReadable(arg) 形式的調用與以下調用的行為完全相同:

     file.setReadable(arg, true) 

參數:
readable - 如果為 true,則設置允許讀操作的存取權限;如果為 false,則不允許讀操作。
返回:
當且僅當操作成功時返回 true。如果使用者不具有更改此抽象路徑名存取權限的權限,那麼操作將失敗。如果 readablefalse,並且底層檔案系統不實作讀權限,那麼操作也將失敗。
拋出:
SecurityException - 如果安全管理器存在且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對檔案進行寫存取。
從以下版本開始:
1.6

setExecutable

public boolean setExecutable(boolean executable,
                             boolean ownerOnly)
設置此抽象路徑名的所有者或所有使用者的執行權限。

參數:
executable - 如果為 true,則設置允許執行操作的存取權限;如果為 false,則不允許執行操作。
ownerOnly - 如果為 true,則執行權限只適用於所有者的執行權限;否則適用於所有使用者。如果底層檔案系統不能區分所有者執行權限與其他執行權限,那麼無論該參數為何值,執行權限將適用於所有使用者。
返回:
當且僅當操作成功時返回 true。如果使用者不具有更改此抽象路徑名存取權限的權限,那麼操作將失敗。如果 executablefalse,並且底層檔案系統不實作執行權限,那麼操作也將失敗。
拋出:
SecurityException - 如果安全管理器存在且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對檔案進行寫存取。
從以下版本開始:
1.6

setExecutable

public boolean setExecutable(boolean executable)
設置此抽象路徑名所有者執行權限的一個便捷方法。

此方法 file.setExcutable(arg) 形式的調用與以下調用的行為完全相同:

     file.setExecutable(arg, true) 

參數:
executable - 如果為 true,則設置允許執行操作的存取權限;如果為 false,則不允許執行操作。
返回:
當且僅當操作成功時返回 true。如果使用者不具有更改此抽象路徑名存取權限的權限,那麼操作將失敗。如果 executablefalse,並且底層檔案系統不實作執行權限,那麼操作也將失敗。
拋出:
SecurityException - 如果安全管理器存在且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對檔案進行寫存取。
從以下版本開始:
1.6

canExecute

public boolean canExecute()
測試應用程序是否可以執行此抽象路徑名表示的檔案。

返回:
當且僅當抽象路徑名存在 允許應用程序執行檔案時返回 true
拋出:
SecurityException - 如果安全管理器存在且其 SecurityManager.checkExec(java.lang.String) 方法拒絕對檔案進行執行存取。
從以下版本開始:
1.6

listRoots

public static File[] listRoots()
列出可用的檔案系統根。

特定 Java 平臺可以支持零個或更多個分層組織的檔案系統。每個檔案系統有一個 root 目錄,可以從這裡到達檔案系統中的所有其他檔案。例如,Windows 平臺為每個活動驅動器提供了一個根目錄;UNIX 平臺只有一個根目錄,即 "/"。可用檔案系統根的設置受各種系統級操作的影響,比如可移動介質的插入和彈出,以及斷開或卸載那些物理磁碟或虛擬磁碟。

此方法返回一個 File 物件陣列,這些物件表示可用檔案系統根的根目錄。可以保證本地機器上物理存在的任何檔案的規範路徑名都以此方法返回的根之一開始。

位於其他一些機器上的檔案的規範路徑名是通過遠端檔案系統協議(比如 SMB 或 NFS)存取的,它們可能以此方法返回的根之一開始,也可能不是這樣。如果遠端檔案的路徑名在語法上無法與本地檔案的路徑名進行區分,那麼它將以此方法返回的根之一開始。例如,此方法將返回表示 Windows 平臺上映射為網路驅動器根目錄的 File 物件,而不返回包含 UNC 路徑名的 File 物件。

與此類別中的大多數方法不同,此方法不拋出安全性異常。如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對特定根目錄進行讀存取,那麼該目錄將不會出現在結果中。

返回:
表示可用檔案系統根的 File 物件陣列;如果無法確定根集,則返回 null。如果沒有檔案系統,那麼該陣列將為空。
從以下版本開始:
1.2

getTotalSpace

public long getTotalSpace()
返回此抽象路徑名指定的分區大小。

返回:
分區的大小,以位元組為單位;如果此抽象路徑名沒有指定分區,則返回 0L
拋出:
SecurityException - 如果安裝了安全管理器,並且安全管理器拒絕 RuntimePermission("getFileSystemAttributes"),或者其 SecurityManager.checkRead(String) 方法拒絕對此抽象路徑名指定的檔案進行讀存取
從以下版本開始:
1.6

getFreeSpace

public long getFreeSpace()
返回此抽象路徑名指定的分區中未分派的位元組數。

返回的未分派位元組數是一個提示,而不是一個保證,只能使用這些位元組的一部分。未分派位元組數很可能在此調用後立即與實際相符。某些外部 I/O 操作可能使其與實際不符,這些操作包括那些在此虛擬機器外部系統上進行的操作。此方法不保證對此檔案系統的寫操作將成功。

返回:
分區上的未分派位元組數;如果抽象路徑名沒有指定分區,則返回 0L。返回值將小於等於 getTotalSpace() 返回的總檔案系統大小。
拋出:
SecurityException - 如果安裝了安全管理器,並且安全管理器拒絕 RuntimePermission("getFileSystemAttributes"),或者其 SecurityManager.checkRead(String) 方法拒絕對此抽象路徑名指定的檔案進行讀存取
從以下版本開始:
1.6

getUsableSpace

public long getUsableSpace()
返回此抽象路徑名指定的分區上可用於此虛擬機器的位元組數。若有可能,此方法將檢查寫權限和其他作業系統限制,因此與 getFreeSpace() 相比,此方法能更準確地估計可實際寫入的新資料數。

返回的可用位元組數是一個提示,而不是一個保證,只能使用這些位元組的一部分。未分派位元組數很可能在此調用後立即與實際相符。某些外部 I/O 操作可能使其與實際不符,這些操作包括那些在此虛擬機器外部系統上進行的操作。此方法不保證對此檔案系統的寫操作將成功。

返回:
分區上的可用位元組數;如果抽象路徑名沒有指定分區,則返回 0L。在此資訊不可用的系統上,此方法等效於調用 getFreeSpace()
拋出:
SecurityException - 如果安裝了安全管理器,並且安全管理器拒絕 RuntimePermission("getFileSystemAttributes"),或者其 SecurityManager.checkRead(String) 方法拒絕對此抽象路徑名指定的檔案進行讀存取
從以下版本開始:
1.6

createTempFile

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

在指定目錄中創建一個新的空檔案,使用給定的前綴和後綴字元串產生其名稱。如果此方法成功返回,則可以保證:

  1. 由返回的抽象路徑名表示的檔案在此方法被調用之前不存在。
  2. 此方法及其所有變體都不會在虛擬機器的當前調用中再次返回相同的抽象路徑名。
此方法只提供了臨時檔案的部分功能。要安排自動刪除此方法創建的檔案,可使用 deleteOnExit() 方法。

prefix 參數至少必須是三個位元組長。建議前綴使用一個短的、有意義的字元串,比如 "hjb""mail"suffix 參數可以為 null,在這種情況下,將使用後綴 ".tmp"

要創建新檔案,可能首先要調整前綴和後綴,使其滿足底層平臺的限制。如果前綴太長,則將它截斷,但前三個字元將始終保留。如果後綴太長,則將它截斷,但如果它以句點字元 ('.') 開始,則該句點以及後跟的前三個字元將始終保留。進行了這些調整後,通過連接前綴、五個或更多個內部產生的字元以及後綴,便產生了新檔案的名稱。

如果 directory 參數為 null,則使用與系統有關的預設臨時檔案目錄。預設臨時檔案目錄由系統屬性 java.io.tmpdir 指定。在 UNIX 系統上,此屬性的預設值通常是 "/tmp""/var/tmp";在 Microsoft Windows 系統上,該值通常是 "C:\\WINNT\\TEMP"。在調用 Java 虛擬機器時,可為此系統屬性提供不同的值,但不保證使用程序更改此屬性會對此方法使用的臨時目錄產生影響。

參數:
prefix - 用於產生檔案名的前綴字元串;必須至少是三字元長
suffix - 用於產生檔案名的後綴字元串;可以為 null,在這種情況下,將使用後綴 ".tmp"
directory - 將創建的檔案所在的目錄;如果使用預設臨時檔案目錄,則該參數為 null
返回:
表示新建空檔案的抽象路徑名
拋出:
IllegalArgumentException - 如果 prefix 參數包含的字元少於三個
IOException - 如果無法創建檔案
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允許創建檔案
從以下版本開始:
1.2

createTempFile

public static File createTempFile(String prefix,
                                  String suffix)
                           throws IOException
在預設臨時檔案目錄中創建一個空檔案,使用給定前綴和後綴產生其名稱。調用此方法等同於調用 createTempFile(prefix, suffix, null)

參數:
prefix - 用於產生檔案名的前綴字元串;必須至少是三字元長
suffix - 用於產生檔案名的後綴字元串;可以為 null,在這種情況下,將使用後綴 ".tmp"
返回:
表示新建空檔案的抽象路徑名
拋出:
IllegalArgumentException - 如果 prefix 參數包含的字元少於三個
IOException - 如果無法創建檔案
SecurityException - 如果存在安全管理器,且其 SecurityManager.checkWrite(java.lang.String) 方法不允許創建檔案
從以下版本開始:
1.2

compareTo

public int compareTo(File pathname)
按字母順序比較兩個抽象路徑名。此方法定義的順序取決於底層系統。在 UNIX 系統上,比較路徑名時,字母大小寫通常很重要,而在 Microsoft Windows 系統上,這通常不重要。

指定者:
介面 Comparable<File> 中的 compareTo
參數:
pathname - 將與此抽象路徑名進行比較的抽象路徑名
返回:
如果該參數等於此抽象路徑名,則返回零;如果此抽象路徑名在字母順序上小於該參數,則返回小於零的值;如果此抽象路徑名在字母順序上大於該參數,則返回大於零的值
從以下版本開始:
1.2

equals

public boolean equals(Object obj)
測試此抽象路徑名與給定物件是否相等。當且僅當該參數不是 null,而是一個與此抽象路徑名表示相同的檔案或目錄的抽象路徑名時,返回 true。兩個抽象路徑名是否相等取決於底層系統。在 UNIX 系統上,比較路徑名時,字母大小寫通常很重要,而在 Microsoft Windows 系統上,這通常不重要。

覆寫:
類別 Object 中的 equals
參數:
obj - 要與此抽象路徑名進行比較的物件
返回:
當且僅當物件相同時,返回 true;否則返回 false
另請參見:
Object.hashCode(), Hashtable

hashCode

public int hashCode()
計算此抽象路徑名的雜湊碼。因為抽象路徑名的相等性與系統有關,所以對其雜湊碼的計算也與系統有關。在 UNIX 系統上,抽象路徑名的雜湊碼等於其路徑名字元串和十進制值 1234321 的雜湊碼的異或。在 Microsoft Windows 系統上,雜湊碼等於其轉換為小寫的路徑名字元串和十進制值 1234321 的雜湊碼的異或。在將路徑名字元串轉換為小寫時不考慮語言環境。

覆寫:
類別 Object 中的 hashCode
返回:
此抽象路徑名的雜湊碼
另請參見:
Object.equals(java.lang.Object), Hashtable

toString

public String toString()
返回此抽象路徑名的路徑名字元串。該字元串就是 getPath() 方法返回的字元串。

覆寫:
類別 Object 中的 toString
返回:
此抽象路徑名的字元串形式

JavaTM 2 Platform
Standard Ed. 6

提交錯誤或意見

版權所有 2008 Sun Microsystems, Inc. 保留所有權利。請遵守GNU General Public License, version 2 only