鴻蒙OS File

2022-10-19 15:55 更新

File

java.lang.Object

|---java.io.File

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

文件和目錄路徑名的抽象表示。

用戶界面和操作系統(tǒng)使用系統(tǒng)相關的路徑名字符串來命名文件和目錄。 此類呈現(xiàn)分層路徑名的抽象的、與系統(tǒng)無關的視圖。 抽象路徑名有兩個組成部分:

  1. 一個可選的與系統(tǒng)相關的前綴字符串,例如磁盤驅(qū)動器說明符、UNIX 根目錄的“/”或 Microsoft Windows UNC 路徑名的“”,以及
  2. 零個或多個字符串名稱的序列。

抽象路徑名中的第一個名稱可以是目錄名,或者在 Microsoft Windows UNC 路徑名的情況下,可以是主機名。 抽象路徑名中的每個后續(xù)名稱都表示一個目錄; 姓氏可以表示目錄或文件。 空抽象路徑名沒有前綴和空名稱序列。

路徑名字符串與抽象路徑名之間的轉換本質(zhì)上是系統(tǒng)相關的。 將抽象路徑名轉換為路徑名字符串時,每個名稱與下一個名稱由默認分隔符的單個副本分隔。 默認名稱分隔符由系統(tǒng)屬性 file.separator 定義,并且在此類的公共靜態(tài)字段 separator 和 separatorChar 中可用。 當路徑名字符串轉換為抽象路徑名時,其中的名稱可以由默認名稱分隔符或底層系統(tǒng)支持的任何其他名稱分隔符分隔。

路徑名,無論是抽象的還是字符串形式的,都可以是絕對的或相對的。 絕對路徑名是完整的,因為不需要其他信息來定位它表示的文件。 相反,相對路徑名必須根據(jù)從其他路徑名獲取的信息來解釋。 默認情況下,java.io 包中的類總是根據(jù)當前用戶目錄解析相對路徑名。 此目錄由系統(tǒng)屬性 user.dir 命名,通常是調(diào)用 Java 虛擬機的目錄。

抽象路徑名的父級可以通過調(diào)用此類的 getParent() 方法獲得,它由路徑名的前綴和路徑名名稱序列中除最后一個以外的每個名稱組成。 每個目錄的絕對路徑名是任何具有絕對抽象路徑名的 File 對象的祖先,該絕對抽象路徑名以目錄的絕對路徑名開頭。 例如,抽象路徑名“/usr”表示的目錄是路徑名“/usr/local/bin”表示的目錄的祖先。

前綴概念用于處理 UNIX 平臺上的根目錄,以及 Microsoft Windows 平臺上的驅(qū)動器說明符、根目錄和 UNC 路徑名,如下所示:

  • 對于 UNIX 平臺,絕對路徑名的前綴始終是“/”。 相對路徑名沒有前綴。 表示根目錄的抽象路徑名具有前綴“/”和一個空的名稱序列。
  • 對于 Microsoft Windows 平臺,包含驅(qū)動器說明符的路徑名前綴由驅(qū)動器號組成,后跟“:”,如果路徑名是絕對路徑,則可能后跟“”。 UNC 路徑名的前綴是“”; 主機名和共享名是名稱序列中的前兩個名稱。 未指定驅(qū)動器的相對路徑名沒有前綴。

此類的實例可能表示也可能不表示實際的文件系統(tǒng)對象,例如文件或目錄。 如果它確實表示這樣的對象,則該對象駐留在分區(qū)中。 分區(qū)是文件系統(tǒng)的特定于操作系統(tǒng)的存儲部分。 單個存儲設備(例如物理磁盤驅(qū)動器、閃存、CD-ROM)可能包含多個分區(qū)。 該對象(如果有)將駐留在此路徑名的絕對形式的某個祖先命名的分區(qū)上。

文件系統(tǒng)可以對實際文件系統(tǒng)對象的某些操作實施限制,例如讀取、寫入和執(zhí)行。這些限制統(tǒng)稱為訪問權限。文件系統(tǒng)可能對單個對象具有多組訪問權限。例如,一組可能適用于對象的所有者,而另一組可能適用于所有其他用戶。對象的訪問權限可能會導致此類中的某些方法失敗。

File 類的實例是不可變的;也就是說,一旦創(chuàng)建,由 File 對象表示的抽象路徑名永遠不會改變。

與 java.nio.file 包的互操作性

java.nio.file 包定義了 Java 虛擬機訪問文件、文件屬性和文件系統(tǒng)的接口和類。此 API 可用于克服 java.io.File 類的許多限制。 toPath 方法可用于獲取使用 File 對象表示的抽象路徑來定位文件的 Path。生成的 Path 可以與 Files 類一起使用,以提供對其他文件操作、文件屬性和 I/O 異常的更有效和更廣泛的訪問,以幫助在對文件的操作失敗時診斷錯誤。

Since:

JDK1.0

字段摘要

修飾符和類型 字段 描述
static String pathSeparator 系統(tǒng)相關的路徑分隔符,為方便起見表示為字符串。
static char pathSeparatorChar 系統(tǒng)相關的路徑分隔符字符。
static String separator 系統(tǒng)相關的默認名稱分隔符,為方便起見表示為字符串。
static char separatorChar 系統(tǒng)相關的默認名稱分隔符。

構造函數(shù)摘要

構造函數(shù) 描述
File(File parent, String child) 從父抽象路徑名和子路徑名字符串創(chuàng)建一個新的 File 實例。
File(String pathname) 通過將給定的路徑名字符串轉換為抽象路徑名來創(chuàng)建一個新的 File 實例。
File(String parent, String child) 從父路徑名字符串和子路徑名字符串創(chuàng)建一個新的 File 實例。
File(URI uri) 通過將給定的 file: URI 轉換為抽象路徑名來創(chuàng)建一個新的 File 實例。

方法總結

修飾符和類型 方法 描述
boolean canExecute() 測試應用程序是否可以執(zhí)行此抽象路徑名表示的文件。
boolean canRead() 測試應用程序是否可以讀取此抽象路徑名表示的文件。
boolean canWrite() 測試應用程序是否可以修改此抽象路徑名表示的文件。
int compareTo(File pathname) 按字典順序比較兩個抽象路徑名。
boolean createNewFile() 當且僅當具有此名稱的文件尚不存在時,以原子方式創(chuàng)建以此抽象路徑名命名的新的空文件。
static File createTempFile(String prefix, String suffix) 在默認臨時文件目錄中創(chuàng)建一個空文件,使用給定的前綴和后綴生成其名稱。
static File createTempFile(String prefix, String suffix, File directory) 在指定目錄中創(chuàng)建一個新的空文件,使用給定的前綴和后綴字符串生成其名稱。
boolean delete() 刪除此抽象路徑名表示的文件或目錄。
void deleteOnExit() 請求在虛擬機終止時刪除此抽象路徑名表示的文件或目錄。
boolean equals(Object obj) 測試此抽象路徑名是否與給定對象相等。
boolean exists() 測試此抽象路徑名表示的文件或目錄是否存在。
File getAbsoluteFile() 返回此抽象路徑名的絕對形式。
String getAbsolutePath() 返回此抽象路徑名的絕對路徑名字符串。
File getCanonicalFile() 返回此抽象路徑名的規(guī)范形式。
String getCanonicalPath() 返回此抽象路徑名的規(guī)范路徑名字符串。
long getFreeSpace() 返回由此抽象路徑名命名的分區(qū)中未分配的字節(jié)數(shù)。
String getName() 返回此抽象路徑名表示的文件或目錄的名稱。
String getParent() 返回此抽象路徑名的父目錄的路徑名字符串,如果此路徑名未命名父目錄,則返回 null。
File getParentFile() 返回此抽象路徑名的父級的抽象路徑名,如果此路徑名未命名父目錄,則返回 null。
String getPath() 將此抽象路徑名轉換為路徑名字符串。
long getTotalSpace() 返回由此抽象路徑名命名的分區(qū)的大小。
long getUsableSpace() 返回此抽象路徑名命名的分區(qū)上此虛擬機可用的字節(jié)數(shù)。
int hashCode() 計算此抽象路徑名的哈希碼。
boolean isAbsolute() 測試此抽象路徑名是否是絕對的。
boolean isDirectory() 測試此抽象路徑名表示的文件是否為目錄。
boolean isFile() 測試此抽象路徑名表示的文件是否為普通文件。
boolean isHidden() 測試此抽象路徑名命名的文件是否為隱藏文件。
long lastModified() 返回此抽象路徑名表示的文件最后一次修改的時間。
long length() 返回此抽象路徑名表示的文件的長度。
String[] list() 返回一個字符串數(shù)組,命名此抽象路徑名表示的目錄中的文件和目錄。
String[] list(FilenameFilter filter) 返回一個字符串數(shù)組,命名由該抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles() 返回一個抽象路徑名數(shù)組,表示此抽象路徑名表示的目錄中的文件。
File[] listFiles(FileFilter filter) 返回一個抽象路徑名數(shù)組,表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
File[] listFiles(FilenameFilter filter) 返回一個抽象路徑名數(shù)組,表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。
static File[] listRoots() 列出可用的文件系統(tǒng)根。
boolean mkdir() 創(chuàng)建由此抽象路徑名命名的目錄。
boolean mkdirs() 創(chuàng)建由此抽象路徑名命名的目錄,包括任何必要但不存在的父目錄。
boolean renameTo(File dest) 重命名此抽象路徑名表示的文件。
boolean setExecutable(boolean executable) 設置此抽象路徑名的所有者執(zhí)行權限的便捷方法。
boolean setExecutable(boolean executable, boolean ownerOnly) 設置此抽象路徑名的所有者或所有人的執(zhí)行權限。
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) 設置此抽象路徑名的所有者或所有人的寫權限。
Path toPath() 返回從 this 抽象路徑構造的 Path 對象。
String toString() 返回此抽象路徑名的路徑名字符串。
URI toURI() 構造一個文件:表示此抽象路徑名的 URI。
URL toURL() 已棄用。 此方法不會自動轉義 URL 中的非法字符。 建議新代碼將抽象路徑名轉換為 URL,首先通過 toURI 方法將其轉換為 URI,然后通過 URI.toURL 方法將 URI 轉換為 URL。
從類 java.lang.Object 繼承的方法
clone, finalize, getClass, notify, notifyAll, wait, wait, wait

字段詳細信息

pathSeparator

public static final String pathSeparator

系統(tǒng)相關的路徑分隔符,為方便起見表示為字符串。 該字符串包含單個字符,即 pathSeparatorChar。

pathSeparatorChar

public static final char pathSeparatorChar

系統(tǒng)相關的路徑分隔符字符。 該字段被初始化為包含系統(tǒng)屬性 path.separator 值的第一個字符。 此字符用于分隔作為路徑列表給出的文件序列中的文件名。 在 UNIX 系統(tǒng)上,這個字符是 ':'; 在 Microsoft Windows 系統(tǒng)上它是 ';'。

separator

public static final String separator

系統(tǒng)相關的默認名稱分隔符,為方便起見表示為字符串。 該字符串包含單個字符,即 separatorChar。

separatorChar

public static final char separatorChar

系統(tǒng)相關的默認名稱分隔符。 該字段被初始化為包含系統(tǒng)屬性 file.separator 值的第一個字符。 在 UNIX 系統(tǒng)上,該字段的值為 '/'; 在 Microsoft Windows 系統(tǒng)上它是 ''。

構造函數(shù)詳細信息

File

public File(String pathname)

通過將給定的路徑名字符串轉換為抽象路徑名來創(chuàng)建一個新的 File 實例。 如果給定的字符串是空字符串,則結果是空的抽象路徑名。

參數(shù):

參數(shù)名稱 參數(shù)描述
pathname 路徑名字符串

Throws:

Throw名稱 Throw描述
NullPointerException 如果路徑名參數(shù)為空

File

public File(String parent, String child)

從父路徑名字符串和子路徑名字符串創(chuàng)建一個新的 File 實例。

如果 parent 為 null,則創(chuàng)建新的 File 實例,就好像通過在給定的子路徑名字符串上調(diào)用單參數(shù) File 構造函數(shù)一樣。

否則,父路徑名字符串被用來表示目錄,而子路徑名字符串被用來表示目錄或文件。 如果子路徑名字符串是絕對的,那么它將以系統(tǒng)相關的方式轉換為相對路徑名。 如果 parent 是空字符串,則通過將 child 轉換為抽象路徑名并根據(jù)系統(tǒng)相關的默認目錄解析結果來創(chuàng)建新的 File 實例。 否則,每個路徑名字符串都將轉換為抽象路徑名,并且子抽象路徑名將針對父級解析。

參數(shù):

參數(shù)名稱 參數(shù)描述
parent 父路徑名字符串
child 子路徑名字符串

Throws:

Throw名稱 Throw描述
NullPointerException 如果 child 為空

File

public File(File parent, String child)

從父抽象路徑名和子路徑名字符串創(chuàng)建一個新的 File 實例。

如果 parent 為 null,則創(chuàng)建新的 File 實例,就好像通過在給定的子路徑名字符串上調(diào)用單參數(shù) File 構造函數(shù)一樣。

否則,父抽象路徑名被用來表示一個目錄,而子路徑名字符串被用來表示一個目錄或一個文件。 如果子路徑名字符串是絕對的,那么它將以系統(tǒng)相關的方式轉換為相對路徑名。 如果 parent 是空的抽象路徑名,則通過將 child 轉換為抽象路徑名并根據(jù)系統(tǒng)相關的默認目錄解析結果來創(chuàng)建新的 File 實例。 否則,每個路徑名字符串都將轉換為抽象路徑名,并且子抽象路徑名將針對父級解析。

參數(shù):

參數(shù)名稱 參數(shù)描述
parent 父抽象路徑名
child 子路徑名字符串

Throws:

Throw名稱 Throw描述
NullPointerException 如果 child 為空

File

public File(URI uri)

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

文件的確切形式:URI 是系統(tǒng)相關的,因此此構造函數(shù)執(zhí)行的轉換也是系統(tǒng)相關的。

對于給定的抽象路徑名 f,保證

新文件(f.toURI()).equals(f.getAbsoluteFile())

只要原始抽象路徑名、URI 和新的抽象路徑名都是在同一個 Java 虛擬機中創(chuàng)建的(可能是不同的調(diào)用)。 但是,當文件:在一個操作系統(tǒng)上的虛擬機中創(chuàng)建的 URI 被轉換為不同操作系統(tǒng)上的虛擬機中的抽象路徑名時,這種關系通常不成立。

參數(shù):

參數(shù)名稱 參數(shù)描述
uri 一個絕對的、分層的 URI,其方案等于“文件”、一個非空路徑組件以及未定義的權限、查詢和片段組件

Throws:

Throw名稱 Throw描述
NullPointerException 如果 uri 為空
IllegalArgumentException 如果參數(shù)的前提條件不成立

Since:

1.4

方法詳情

getName

public String getName()

返回此抽象路徑名表示的文件或目錄的名稱。 這只是路徑名的名稱序列中的最后一個名稱。 如果路徑名的名稱序列為空,則返回空字符串。

返回:

此抽象路徑名表示的文件或目錄的名稱,如果此路徑名的名稱序列為空,則為空字符串

getParent

public String getParent()

返回此抽象路徑名的父目錄的路徑名字符串,如果此路徑名未命名父目錄,則返回 null。

抽象路徑名的父級由路徑名的前綴(如果有)和路徑名的名稱序列中除最后一個以外的每個名稱組成。 如果名稱序列為空,則路徑名不命名父目錄。

返回:

此抽象路徑名命名的父目錄的路徑名字符串,如果此路徑名未命名父目錄,則為 null

getParentFile

public File getParentFile()

返回此抽象路徑名的父級的抽象路徑名,如果此路徑名未命名父目錄,則返回 null。

抽象路徑名的父級由路徑名的前綴(如果有)和路徑名的名稱序列中除最后一個以外的每個名稱組成。 如果名稱序列為空,則路徑名不命名父目錄。

返回:

此抽象路徑名命名的父目錄的抽象路徑名,如果此路徑名未命名父目錄,則為 null

Since:

1.2

getPath

public String getPath()

將此抽象路徑名轉換為路徑名字符串。 生成的字符串使用默認的名稱分隔符來分隔名稱序列中的名稱。

返回:

此抽象路徑名的字符串形式

isAbsolute

public boolean isAbsolute()

測試此抽象路徑名是否是絕對的。 絕對路徑名的定義取決于系統(tǒng)。 在 UNIX 系統(tǒng)上,如果前綴為“/”,則路徑名是絕對路徑名。 在 Microsoft Windows 系統(tǒng)上,如果路徑名的前綴是驅(qū)動器說明符后跟“”,或者其前綴是“”,則路徑名是絕對路徑名。

返回:

如果此抽象路徑名是絕對的,則為 true,否則為 false

getAbsolutePath

public String getAbsolutePath()

返回此抽象路徑名的絕對路徑名字符串。

如果這個抽象路徑名已經(jīng)是絕對的,那么路徑名字符串就像 getPath() 方法一樣簡單地返回。 如果此抽象路徑名是空的抽象路徑名,則返回當前用戶目錄的路徑名字符串,該路徑名由系統(tǒng)屬性 user.dir 命名。 否則,此路徑名將以系統(tǒng)相關的方式解析。 在 UNIX 系統(tǒng)上,通過根據(jù)當前用戶目錄解析相對路徑名,使其成為絕對路徑名。 在 Microsoft Windows 系統(tǒng)上,通過將相對路徑名解析為由路徑名命名的驅(qū)動器的當前目錄(如果有),從而使相對路徑名成為絕對路徑; 如果不是,則針對當前用戶目錄進行解析。

返回:

表示與此抽象路徑名相同的文件或目錄的絕對路徑名字符串

Throws:

Throw名稱 Throw描述
SecurityException 如果無法訪問所需的系統(tǒng)屬性值。

getAbsoluteFile

public File getAbsoluteFile()

返回此抽象路徑名的絕對形式。 等效于新文件(this.getAbsolutePath())。

返回:

表示與此抽象路徑名相同的文件或目錄的絕對抽象路徑名

Throws:

Throw名稱 Throw描述
SecurityException 如果無法訪問所需的系統(tǒng)屬性值。

Since:

1.2

getCanonicalPath

public String getCanonicalPath() throws IOException

返回此抽象路徑名的規(guī)范路徑名字符串。

規(guī)范路徑名是絕對且唯一的。規(guī)范形式的精確定義取決于系統(tǒng)。如果需要,此方法首先將此路徑名轉換為絕對形式,就像調(diào)用 getAbsolutePath() 方法一樣,然后以系統(tǒng)相關的方式將其映射到其唯一形式。這通常涉及刪除冗余名稱,例如“?!焙吐窂矫械摹?.”,解析符號鏈接(在 UNIX 平臺上),并將驅(qū)動器號轉換為標準大小寫(在 Microsoft Windows 平臺上)。

每個表示現(xiàn)有文件或目錄的路徑名都有唯一的規(guī)范形式。每個表示不存在的文件或目錄的路徑名也具有唯一的規(guī)范形式。不存在的文件或目錄的路徑名的規(guī)范形式可能與創(chuàng)建文件或目錄后相同路徑名的規(guī)范形式不同。類似地,現(xiàn)有文件或目錄的路徑名的規(guī)范形式可能與刪除文件或目錄后相同路徑名的規(guī)范形式不同。

返回:

表示與此抽象路徑名相同的文件或目錄的規(guī)范路徑名字符串

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤,這是可能的,因為規(guī)范路徑名的構造可能需要文件系統(tǒng)查詢
SecurityException 如果無法訪問所需的系統(tǒng)屬性值,或者安全管理器存在且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒絕讀取文件

Since:

JDK1.1

getCanonicalFile

public File getCanonicalFile() throws IOException

返回此抽象路徑名的規(guī)范形式。 等效于新文件(this.getCanonicalPath())。

返回:

表示與此抽象路徑名相同的文件或目錄的規(guī)范路徑名字符串

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯誤,這是可能的,因為規(guī)范路徑名的構造可能需要文件系統(tǒng)查詢
SecurityException 如果無法訪問所需的系統(tǒng)屬性值,或者安全管理器存在且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒絕讀取文件

Since:

1.2

toURL

@Deprecated public URL toURL() throws MalformedURLException

已棄用。 此方法不會自動轉義 URL 中的非法字符。 建議新代碼將抽象路徑名轉換為 URL,首先通過 toURI 方法將其轉換為 URI,然后通過 URI.toURL 方法將 URI 轉換為 URL。

將此抽象路徑名轉換為文件:URL。 URL 的確切形式取決于系統(tǒng)。 如果可以確定此抽象路徑名表示的文件是目錄,則生成的 URL 將以斜杠結尾。

返回:

表示等效文件 URL 的 URL 對象

Throws:

Throw名稱 Throw描述
MalformedURLException 如果路徑無法解析為 URL

Since:

1.2

toURI

public URI toURI()

構造一個文件:表示此抽象路徑名的 URI。

URI 的確切形式取決于系統(tǒng)。如果可以確定此抽象路徑名表示的文件是目錄,則生成的 URI 將以斜杠結尾。

對于給定的抽象路徑名 f,保證

new File( f.toURI()).equals( f.getAbsoluteFile())

只要原始抽象路徑名、URI 和新的抽象路徑名都是在同一個 Java 虛擬機中創(chuàng)建的(可能是不同的調(diào)用)。但是,由于抽象路徑名的系統(tǒng)相關性,當一個文件:在一個操作系統(tǒng)上的虛擬機中創(chuàng)建的 URI 被轉換為不同操作系統(tǒng)上的虛擬機中的抽象路徑名時,這種關系通常不成立.

請注意,當此抽象路徑名表示 UNC 路徑名時,UNC 的所有組件(包括服務器名稱組件)都在 URI 路徑中進行編碼。權限組件是未定義的,這意味著它表示為空。 Path 類定義了 Path#toUri 方法以在生成的 URI 的授權組件中對服務器名稱進行編碼。 toPath 方法可用于獲取表示此抽象路徑名的 Path。

返回:

具有等于“文件”的方案的絕對分層 URI、表示此抽象路徑名的路徑以及未定義的權限、查詢和片段組件

Throws:

Throw名稱 Throw描述
SecurityException 如果無法訪問所需的系統(tǒng)屬性值。

Since:

1.4

canRead

public boolean canRead()

測試應用程序是否可以讀取此抽象路徑名表示的文件。 在某些平臺上,可以使用特殊權限啟動 Java 虛擬機,使其能夠讀取標記為不可讀的文件。 因此,即使文件沒有讀取權限,此方法也可能返回 true。

返回:

當且僅當此抽象路徑名指定的文件存在并且應用程序可以讀取時,才為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對文件的讀取訪問權限

canWrite

public boolean canWrite()

測試應用程序是否可以修改此抽象路徑名表示的文件。 在某些平臺上,可以使用允許它修改標記為只讀的文件的特殊權限啟動 Java 虛擬機。 因此,即使文件被標記為只讀,此方法也可能返回 true。

返回:

當且僅當文件系統(tǒng)實際上包含由此抽象路徑名表示的文件并且允許應用程序?qū)懭朐撐募r,才返回 true; 否則為 false。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對文件的寫訪問

exists

public boolean exists()

測試此抽象路徑名表示的文件或目錄是否存在。

返回:

當且僅當此抽象路徑名表示的文件或目錄存在時才為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對文件或目錄的讀取訪問權限

isDirectory

public boolean isDirectory()

測試此抽象路徑名表示的文件是否為目錄。

如果需要將 I/O 異常與文件不是目錄的情況進行區(qū)分,或者同時需要同一文件的多個屬性,則可以使用 Files.readAttributes 方法。

返回:

當且僅當此抽象路徑名表示的文件存在并且是目錄時才為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對文件的讀取訪問權限

isFile

public boolean isFile()

測試此抽象路徑名表示的文件是否為普通文件。 如果文件不是目錄,并且滿足其他系統(tǒng)相關標準,則該文件是正常的。 Java 應用程序創(chuàng)建的任何非目錄文件都保證是普通文件。

如果需要區(qū)分 I/O 異常和文件不是普通文件的情況,或者同時需要同一文件的多個屬性,則可以使用 Files.readAttributes 方法。

返回:

當且僅當此抽象路徑名表示的文件存在并且是普通文件時才為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對文件的讀取訪問權限

isHidden

public boolean isHidden()

測試此抽象路徑名命名的文件是否為隱藏文件。 隱藏的確切定義取決于系統(tǒng)。 在 UNIX 系統(tǒng)上,如果文件名以句點字符 ('.') 開頭,則文件被認為是隱藏的。 在 Microsoft Windows 系統(tǒng)上,如果文件在文件系統(tǒng)中被標記為隱藏文件,則該文件被視為隱藏文件。

返回:

當且僅當此抽象路徑名表示的文件根據(jù)底層平臺的約定被隱藏時才為 true

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對文件的讀取訪問權限

Since:

1.2

lastModified

public long lastModified()

返回此抽象路徑名表示的文件最后一次修改的時間。

如果需要區(qū)分 I/O 異常和返回 0L 的情況,或者同時需要同一文件的多個屬性,或者需要最后訪問時間或創(chuàng)建時間的情況,則 可以使用 Files.readAttributes 方法。

返回:

表示文件最后修改時間的長值,以自紀元(格林威治標準時間 00:00:00,1970 年 1 月 1 日)以來的毫秒數(shù)為單位,如果文件不存在或發(fā)生 I/O 錯誤,則為 0L

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對文件的讀取訪問權限

length

public long length()

返回此抽象路徑名表示的文件的長度。 如果此路徑名表示目錄,則返回值未指定。

如果需要區(qū)分 I/O 異常和返回 0L 的情況,或者同時需要同一文件的多個屬性,則可以使用 Files.readAttributes 方法。

返回:

此抽象路徑名表示的文件的長度(以字節(jié)為單位),如果文件不存在,則為 0L。 對于表示系統(tǒng)相關實體(例如設備或管道)的路徑名,某些操作系統(tǒng)可能會返回 0L。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法拒絕對文件的讀取訪問權限

createNewFile

public boolean createNewFile() throws IOException

當且僅當具有此名稱的文件尚不存在時,以原子方式創(chuàng)建以此抽象路徑名命名的新的空文件。 檢查文件是否存在以及如果文件不存在則創(chuàng)建文件是單個操作,相對于可能影響文件的所有其他文件系統(tǒng)活動而言是原子操作。

注意:此方法不應用于文件鎖定,因為生成的協(xié)議不能可靠地工作。 應該改用 FileLock 工具。

返回:

如果命名文件不存在且已成功創(chuàng)建,則為 true; 如果命名文件已經(jīng)存在,則返回 false

Throws:

Throw每次 Throw描述
IOException 如果發(fā)生 I/O 錯誤
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對文件的寫訪問

Since:

1.2

delete

public boolean delete()

刪除此抽象路徑名表示的文件或目錄。 如果此路徑名表示一個目錄,則該目錄必須為空才能被刪除。

請注意,F(xiàn)iles 類定義了 delete 方法以在無法刪除文件時拋出 IOException。 這對于錯誤報告和診斷無法刪除文件的原因很有用。

返回:

當且僅當文件或目錄被成功刪除時為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkDelete(java.lang.String) 方法拒絕刪除對文件的訪問權限

deleteOnExit

public void deleteOnExit()

請求在虛擬機終止時刪除此抽象路徑名表示的文件或目錄。 文件(或目錄)的刪除順序與注冊時相反。 調(diào)用此方法刪除已注冊刪除的文件或目錄無效。 按照 Java 語言規(guī)范的定義,僅在虛擬機正常終止時才會嘗試刪除。

一旦請求刪除,就無法取消請求。 因此,應謹慎使用此方法。

注意:此方法不應用于文件鎖定,因為生成的協(xié)議不能可靠地工作。 應該改用 FileLock 工具。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkDelete(java.lang.String) 方法拒絕刪除對文件的訪問權限

Since:

1.2

list

public String[] list()

返回一個字符串數(shù)組,命名此抽象路徑名表示的目錄中的文件和目錄。

如果此抽象路徑名不表示目錄,則此方法返回 null。否則返回一個字符串數(shù)組,一個對應于目錄中的每個文件或目錄。結果中不包括表示目錄本身和目錄父目錄的名稱。每個字符串都是一個文件名,而不是一個完整的路徑。

無法保證結果數(shù)組中的名稱字符串會以任何特定順序出現(xiàn);特別是,它們不能保證按字母順序出現(xiàn)。

請注意,F(xiàn)iles 類定義了 newDirectoryStream 方法來打開目錄并遍歷目錄中文件的名稱。在處理非常大的目錄時,這可能會使用更少的資源,并且在處理遠程目錄時可能會更敏感。

返回:

一個字符串數(shù)組,命名此抽象路徑名表示的目錄中的文件和目錄。如果目錄為空,則數(shù)組將為空。如果此抽象路徑名不表示目錄,或者發(fā)生 I/O 錯誤,則返回 null。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒絕對目錄的讀取訪問權限

list

public String[] list(FilenameFilter filter)

返回一個字符串數(shù)組,命名由該抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。 此方法的行為與 list() 方法的行為相同,只是返回數(shù)組中的字符串必須滿足過濾器。 如果給定的過濾器為空,則接受所有名稱。 否則,當且僅當在此抽象路徑名和它所表示的目錄中的文件或目錄的名稱上調(diào)用過濾器的 FilenameFilter#accept 方法時結果值為 true 時,名稱才滿足過濾器。

參數(shù):

參數(shù)名稱 參數(shù)描述
filter 文件名過濾器

返回:

一個字符串數(shù)組,命名由給定過濾器接受的此抽象路徑名表示的目錄中的文件和目錄。 如果目錄為空或過濾器不接受任何名稱,則數(shù)組將為空。 如果此抽象路徑名不表示目錄,或者發(fā)生 I/O 錯誤,則返回 null。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒絕對目錄的讀取訪問權限

listFiles

public File[] listFiles()

返回一個抽象路徑名數(shù)組,表示此抽象路徑名表示的目錄中的文件。

如果此抽象路徑名不表示目錄,則此方法返回 null。否則返回一個 File 對象數(shù)組,一個對應于目錄中的每個文件或目錄。結果中不包括表示目錄本身和目錄父目錄的路徑名。每個生成的抽象路徑名都是使用 File(File, String) 構造函數(shù)從這個抽象路徑名構造的。因此,如果這個路徑名是絕對的,那么每個生成的路徑名都是絕對的;如果此路徑名是相對的,則每個生成的路徑名都將相對于同一目錄。

無法保證結果數(shù)組中的名稱字符串會以任何特定順序出現(xiàn);特別是,它們不能保證按字母順序出現(xiàn)。

請注意,F(xiàn)iles 類定義了 newDirectoryStream 方法來打開目錄并遍歷目錄中文件的名稱。在處理非常大的目錄時,這可能會使用更少的資源。

返回:

一組抽象路徑名,表示由該抽象路徑名表示的目錄中的文件和目錄。如果目錄為空,則數(shù)組將為空。如果此抽象路徑名不表示目錄,或者發(fā)生 I/O 錯誤,則返回 null。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒絕對目錄的讀取訪問權限

Since:

1.2

listFiles

public File[] listFiles(FilenameFilter filter)

返回一個抽象路徑名數(shù)組,表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。 此方法的行為與 listFiles() 方法的行為相同,只是返回數(shù)組中的路徑名必須滿足過濾器。 如果給定的過濾器為空,則接受所有路徑名。 否則,當且僅當在此抽象路徑名和它所表示的目錄中的文件或目錄的名稱上調(diào)用過濾器的 FilenameFilter#accept 方法時結果值為 true 時,路徑名才滿足過濾器。

參數(shù):

參數(shù)名稱 參數(shù)描述
filter 文件名過濾器

返回:

一組抽象路徑名,表示由該抽象路徑名表示的目錄中的文件和目錄。 如果目錄為空,則數(shù)組將為空。 如果此抽象路徑名不表示目錄,或者發(fā)生 I/O 錯誤,則返回 null。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒絕對目錄的讀取訪問權限

Since:

1.2

listFiles

public File[] listFiles(FileFilter filter)

返回一個抽象路徑名數(shù)組,表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。 此方法的行為與 listFiles() 方法的行為相同,只是返回數(shù)組中的路徑名必須滿足過濾器。 如果給定的過濾器為空,則接受所有路徑名。 否則,當且僅當在路徑名上調(diào)用過濾器的 FileFilter#accept 方法時結果為 true 時,路徑名才滿足過濾器。

參數(shù):

參數(shù)名稱 參數(shù)描述
filter 文件過濾器

返回:

一組抽象路徑名,表示由該抽象路徑名表示的目錄中的文件和目錄。 如果目錄為空,則數(shù)組將為空。 如果此抽象路徑名不表示目錄,或者發(fā)生 I/O 錯誤,則返回 null。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒絕對目錄的讀取訪問權限

Since:

1.2

mkdir

public boolean mkdir()

創(chuàng)建由此抽象路徑名命名的目錄。

返回:

當且僅當目錄被創(chuàng)建時為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法不允許創(chuàng)建命名目錄

mkdirs

public boolean mkdirs()

創(chuàng)建由此抽象路徑名命名的目錄,包括任何必要但不存在的父目錄。 請注意,如果此操作失敗,它可能已成功創(chuàng)建一些必要的父目錄。

返回:

當且僅當創(chuàng)建了目錄以及所有必要的父目錄時才為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkRead(java.lang.String) 方法不允許驗證命名目錄和所有必要父目錄的存在; 或者如果 SecurityManager.checkWrite(java.lang.String) 方法不允許創(chuàng)建命名目錄和所有必要的父目錄

renameTo

public boolean renameTo(File dest)

重命名此抽象路徑名表示的文件。

此方法行為的許多方面本質(zhì)上與平臺相關:重命名操作可能無法將文件從一個文件系統(tǒng)移動到另一個文件系統(tǒng),它可能不是原子的,并且如果文件具有目標抽象路徑名,它可能不會成功 已經(jīng)存在。 應始終檢查返回值以確保重命名操作成功。

請注意,F(xiàn)iles 類定義了 move 方法以獨立于平臺的方式移動或重命名文件。

參數(shù):

參數(shù)名稱 參數(shù)描述
dest 命名文件的新抽象路徑名

返回:

當且僅當重命名成功時為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對舊路徑名或新路徑名的寫訪問
NullPointerException 如果參數(shù) dest 為空

setLastModified

public boolean setLastModified(long time)

設置由此抽象路徑名命名的文件或目錄的最后修改時間。

所有平臺都支持精確到秒的文件修改時間,但有些平臺提供更高的精度。 該參數(shù)將被截斷以適應支持的精度。 如果操作成功并且沒有對文件進行干預操作,則 lastModified() 方法的下一次調(diào)用將返回傳遞給此方法的(可能被截斷的)時間參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
time 新的最后修改時間,自紀元以來的毫秒數(shù)(格林威治標準時間 00:00:00,1970 年 1 月 1 日)

返回:

當且僅當操作成功時為 true; 否則為 false

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果參數(shù)是否定的
SecurityException 如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對指定文件的寫訪問

Since:

1.2

setReadOnly

public boolean setReadOnly()

標記由此抽象路徑名命名的文件或目錄,以便只允許讀取操作。 調(diào)用此方法后,文件或目錄在被刪除或標記為允許寫入訪問之前不會更改。 在某些平臺上,可以使用允許它修改標記為只讀的文件的特殊權限啟動 Java 虛擬機。 是否可以刪除只讀文件或目錄取決于底層系統(tǒng)。

返回:

當且僅當操作成功時為 true; 否則為 false

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對指定文件的寫訪問

Since:

1.2

setWritable

public boolean setWritable(boolean writable, boolean ownerOnly)

設置此抽象路徑名的所有者或所有人的寫權限。 在某些平臺上,可以使用允許它修改不允許寫入操作的文件的特殊權限來啟動 Java 虛擬機。

Files 類定義了對文件屬性(包括文件權限)進行操作的方法。 當需要對文件權限進行更精細的操作時,可以使用此選項。

參數(shù):

參數(shù)名稱 參數(shù)描述
writable 如果為 true,則設置訪問權限以允許寫操作; 如果為 false 則禁止寫操作
ownerOnly 如果為true,則寫權限僅適用于所有者的寫權限; 否則,它適用于所有人。 如果底層文件系統(tǒng)無法區(qū)分所有者的寫權限和其他人的寫權限,那么該權限將適用于每個人,而不管這個值是多少。

返回:

當且僅當操作成功時才為 true。 如果用戶無權更改此抽象路徑名的訪問權限,則操作將失敗。

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對指定文件的寫訪問

Since:

1.6

setWritable

public boolean setWritable(boolean writable)

設置所有者對此抽象路徑名的寫權限的便捷方法。 在某些平臺上,可以使用允許它修改不允許寫入操作的文件的特殊權限來啟動 Java 虛擬機。

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

     file.setWritable(arg, true) 

參數(shù):

參數(shù)名稱 參數(shù)描述
writable 如果為 true,則設置訪問權限以允許寫操作; 如果為 false 則禁止寫操作

返回:

當且僅當操作成功時才為 true。 如果用戶無權更改此抽象路徑名的訪問權限,則操作將失敗。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對文件的寫訪問

Since:

1.6

setReadable

public boolean setReadable(boolean readable, boolean ownerOnly)

設置此抽象路徑名的所有者或所有人的讀取權限。 在某些平臺上,可以使用特殊權限啟動 Java 虛擬機,使其能夠讀取標記為不可讀的文件。

Files 類定義了對文件屬性(包括文件權限)進行操作的方法。 當需要對文件權限進行更精細的操作時,可以使用此選項。

參數(shù):

參數(shù)名稱 參數(shù)描述
readable 如果為 true,則設置訪問權限以允許讀取操作; 如果為 false 則不允許讀取操作
ownerOnly 如果為 true,則讀取權限僅適用于所有者的讀取權限; 否則,它適用于所有人。 如果底層文件系統(tǒng)無法區(qū)分所有者的讀取權限和其他人的讀取權限,則該權限將適用于所有人,無論此值如何。

返回:

當且僅當操作成功時才為 true。 如果用戶無權更改此抽象路徑名的訪問權限,則操作將失敗。 如果 readable 為 false 并且底層文件系統(tǒng)沒有實現(xiàn)讀權限,那么操作將失敗。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對文件的寫訪問

Since:

1.6

setReadable

public boolean setReadable(boolean readable)

設置所有者對此抽象路徑名的讀取權限的便捷方法。 在某些平臺上,可以使用特殊權限啟動 Java 虛擬機,使其能夠讀取標記為不可讀的文件。

調(diào)用這種形式為 file.setReadable(arg) 的方法的行為與調(diào)用完全相同

     file.setReadable(arg, true) 

參數(shù):

參數(shù)名稱 參數(shù)描述
readable 如果為 true,則設置訪問權限以允許讀取操作; 如果為 false 則不允許讀取操作

返回:

當且僅當操作成功時才為 true。 如果用戶無權更改此抽象路徑名的訪問權限,則操作將失敗。 如果 readable 為 false 并且底層文件系統(tǒng)沒有實現(xiàn)讀權限,那么操作將失敗。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對文件的寫訪問

Since:

1.6

setExecutable

public boolean setExecutable(boolean executable, boolean ownerOnly)

設置此抽象路徑名的所有者或所有人的執(zhí)行權限。 在某些平臺上,可以使用允許它執(zhí)行未標記為可執(zhí)行文件的特殊權限來啟動 Java 虛擬機。

Files 類定義了對文件屬性(包括文件權限)進行操作的方法。 當需要對文件權限進行更精細的操作時,可以使用此選項。

參數(shù):

參數(shù)名稱 參數(shù)描述
executable 如果為 true,則設置訪問權限以允許執(zhí)行操作; 如果為 false 則不允許執(zhí)行操作
ownerOnly 如果為 true,則執(zhí)行權限僅適用于所有者的執(zhí)行權限; 否則,它適用于所有人。 如果底層文件系統(tǒng)無法區(qū)分所有者的執(zhí)行權限和其他人的執(zhí)行權限,則該權限將適用于所有人,無論此值如何。

返回:

當且僅當操作成功時才為 true。 如果用戶無權更改此抽象路徑名的訪問權限,則操作將失敗。 如果 executable 為 false 并且底層文件系統(tǒng)沒有實現(xiàn)執(zhí)行權限,則操作將失敗。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對文件的寫訪問

Since:

1.6

setExecutable

public boolean setExecutable(boolean executable)

設置此抽象路徑名的所有者執(zhí)行權限的便捷方法。 在某些平臺上,可以使用允許它執(zhí)行未標記為可執(zhí)行文件的特殊權限來啟動 Java 虛擬機。

調(diào)用這種形式為 file.setExcutable(arg) 的方法的行為與調(diào)用完全相同

     file.setExecutable(arg, true) 

參數(shù):

參數(shù)名稱 參數(shù)描述
executable 如果為 true,則設置訪問權限以允許執(zhí)行操作; 如果為 false 則不允許執(zhí)行操作

返回:

當且僅當操作成功時才為 true。 如果用戶無權更改此抽象路徑名的訪問權限,則操作將失敗。 如果 executable 為 false 并且底層文件系統(tǒng)沒有實現(xiàn)執(zhí)行權限,則操作將失敗。

Throws:

Throw名稱 Throw描述
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法拒絕對文件的寫訪問

Since:

1.6

canExecute

public boolean canExecute()

測試應用程序是否可以執(zhí)行此抽象路徑名表示的文件。 在某些平臺上,可以使用允許它執(zhí)行未標記為可執(zhí)行文件的特殊權限來啟動 Java 虛擬機。 因此,即使文件沒有執(zhí)行權限,此方法也可能返回 true。

返回:

當且僅當抽象路徑名存在并且允許應用程序執(zhí)行文件時才為 true

Throws:

Throw名稱 Throw描述
SecurityException 如果安全管理器存在并且其 SecurityManager.checkExec(java.lang.String) 方法拒絕執(zhí)行對文件的訪問

Since:

1.6

listRoots

public static File[] listRoots()

列出可用的文件系統(tǒng)根。

一個特定的 Java 平臺可能支持零個或多個分層組織的文件系統(tǒng)。每個文件系統(tǒng)都有一個根目錄,可以從該根目錄訪問該文件系統(tǒng)中的所有其他文件。例如,Windows 平臺為每個活動驅(qū)動器都有一個根目錄; UNIX 平臺有一個根目錄,即“/”。可用文件系統(tǒng)根的集合受到各種系統(tǒng)級操作的影響,例如可移動媒體的插入或彈出以及物理或虛擬磁盤驅(qū)動器的斷開或卸載。

此方法返回一個 File 對象數(shù)組,這些對象表示可用文件系統(tǒng)根目錄的根目錄。保證本地機器上物理存在的任何文件的規(guī)范路徑名都將以此方法返回的根之一開頭。

駐留在其他機器上并通過遠程文件系統(tǒng)協(xié)議(如 SMB 或 NFS)訪問的文件的規(guī)范路徑名可能以也可能不以此方法返回的根之一開頭。如果遠程文件的路徑名在語法上與本地文件的路徑名無法區(qū)分,那么它將以此方法返回的根之一開始。因此,例如,表示 Windows 平臺的映射網(wǎng)絡驅(qū)動器的根目錄的 File 對象將由該方法返回,而包含 UNC 路徑名的 File 對象不會由該方法返回。

與此類中的大多數(shù)方法不同,此方法不會引發(fā)安全異常。如果存在安全管理器并且其 SecurityManager#checkRead(String) 方法拒絕對特定根目錄的讀取訪問,則該目錄將不會出現(xiàn)在結果中。

返回:

表示可用文件系統(tǒng)根的 File 對象數(shù)組,如果無法確定根集,則為 null。如果沒有文件系統(tǒng)根,則該數(shù)組將為空。

Since:

1.2

getTotalSpace

public long getTotalSpace()

返回由此抽象路徑名命名的分區(qū)的大小。

返回:

分區(qū)的大?。ㄒ宰止?jié)為單位),如果此抽象路徑名未命名分區(qū),則為 0L

Throws:

Throw名稱 Throw描述
SecurityException 如果已安裝安全管理器并且它拒絕 RuntimePermission("getFileSystemAttributes") 或其 SecurityManager#checkRead(String) 方法拒絕對該抽象路徑名命名的文件的讀取訪問權限

Since:

1.6

getFreeSpace

public long getFreeSpace()

返回由此抽象路徑名命名的分區(qū)中未分配的字節(jié)數(shù)。

返回的未分配字節(jié)數(shù)是一個提示,但不能保證可以使用這些字節(jié)中的大部分或任何一個。 未分配字節(jié)數(shù)很可能在此調(diào)用后立即準確。 任何外部 I/O 操作(包括在此虛擬機之外的系統(tǒng)上進行的操作)都可能使其不準確。 此方法不保證對該文件系統(tǒng)的寫入操作會成功。

返回:

分區(qū)上未分配的字節(jié)數(shù),如果抽象路徑名未命名分區(qū),則為 0L。 該值將小于或等于 getTotalSpace() 返回的文件系統(tǒng)總大小。

Throws:

Throw名稱 Throw描述
SecurityException 如果已安裝安全管理器并且它拒絕 RuntimePermission("getFileSystemAttributes") 或其 SecurityManager#checkRead(String) 方法拒絕對該抽象路徑名命名的文件的讀取訪問權限

Since:

1.6

getUsableSpace

public long getUsableSpace()

返回此抽象路徑名命名的分區(qū)上此虛擬機可用的字節(jié)數(shù)。 如果可能,此方法會檢查寫入權限和其他操作系統(tǒng)限制,因此通常會比 getFreeSpace() 更準確地估計實際可以寫入的新數(shù)據(jù)量。

返回的可用字節(jié)數(shù)是一個提示,但不能保證可以使用這些字節(jié)中的大部分或任何一個。 未分配字節(jié)數(shù)很可能在此調(diào)用后立即準確。 任何外部 I/O 操作(包括在此虛擬機之外的系統(tǒng)上進行的操作)都可能使其不準確。 此方法不保證對該文件系統(tǒng)的寫入操作會成功。

返回:

分區(qū)上的可用字節(jié)數(shù),如果抽象路徑名未命名分區(qū),則為 0L。 在此信息不可用的系統(tǒng)上,此方法將等效于調(diào)用 getFreeSpace()。

Throws:

Throw名稱 Throw描述
SecurityException 如果已安裝安全管理器并且它拒絕 RuntimePermission("getFileSystemAttributes") 或其 SecurityManager#checkRead(String) 方法拒絕對該抽象路徑名命名的文件的讀取訪問權限

Since:

1.6

createTempFile

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

在指定目錄中創(chuàng)建一個新的空文件,使用給定的前綴和后綴字符串生成其名稱。 如果此方法成功返回,則保證:

  1. 返回的抽象路徑名所表示的文件在該方法被調(diào)用之前不存在,并且
  2. 此方法及其任何變體都不會在虛擬機的當前調(diào)用中再次返回相同的抽象路徑名。

此方法僅提供臨時文件功能的一部分。要安排自動刪除由此方法創(chuàng)建的文件,請使用 deleteOnExit() 方法。

前綴參數(shù)的長度必須至少為三個字符。建議前綴是一個簡短的、有意義的字符串,例如“hjb”或“mail”。后綴參數(shù)可能為空,在這種情況下將使用后綴“.tmp”。

為了創(chuàng)建新文件,可以首先調(diào)整前綴和后綴以適應底層平臺的限制。如果前綴太長,那么它將被截斷,但它的前三個字符將始終被保留。如果后綴太長,它也會被截斷,但如果它以句點字符 ('.') 開頭,則句點和后面的前三個字符將始終保留。完成這些調(diào)整后,將通過連接前綴、五個或更多內(nèi)部生成的字符和后綴來生成新文件的名稱。

如果目錄參數(shù)為空,則將使用系統(tǒng)相關的默認臨時文件目錄。默認臨時文件目錄由系統(tǒng)屬性 java.io.tmpdir 指定。在 UNIX 系統(tǒng)上,該屬性的默認值通常是“/tmp”或“/var/tmp”;在 Microsoft Windows 系統(tǒng)上,它通常是“C:\WINNT\TEMP”。調(diào)用 Java 虛擬機時,可以為該系統(tǒng)屬性賦予不同的值,但不保證對該屬性的編程更改對該方法使用的臨時目錄有任何影響。

參數(shù):

參數(shù)名稱 參數(shù)描述
prefix 用于生成文件名的前綴字符串; 長度必須至少為三個字符
suffix 用于生成文件名的后綴字符串; 可能為空,在這種情況下,將使用后綴“.tmp”
directory 要在其中創(chuàng)建文件的目錄,如果要使用默認的臨時文件目錄,則為 null

返回:

表示新創(chuàng)建的空文件的抽象路徑名

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果前綴參數(shù)包含少于三個字符
IOException 如果無法創(chuàng)建文件
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法不允許創(chuàng)建文件

Since:

1.2

createTempFile

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

在默認臨時文件目錄中創(chuàng)建一個空文件,使用給定的前綴和后綴生成其名稱。 調(diào)用此方法等效于調(diào)用 createTempFile(prefix, suffix, null)。

Files.createTempFile 方法提供了另一種在臨時文件目錄中創(chuàng)建空文件的方法。 通過該方法創(chuàng)建的文件可能對該方法創(chuàng)建的文件具有更嚴格的訪問權限,因此可能更適合對安全敏感的應用程序。

參數(shù):

參數(shù)名稱 參數(shù)描述
prefix 用于生成文件名的前綴字符串; 長度必須至少為三個字符
suffix 用于生成文件名的后綴字符串; 可能為空,在這種情況下,將使用后綴“.tmp”

返回:

表示新創(chuàng)建的空文件的抽象路徑名

Throws:

Throw名稱 Throw描述
IllegalArgumentException 如果前綴參數(shù)包含少于三個字符
IOException 如果無法創(chuàng)建文件
SecurityException 如果存在安全管理器并且其 SecurityManager.checkWrite(java.lang.String) 方法不允許創(chuàng)建文件

Since:

1.2

compareTo

public int compareTo(File pathname)

按字典順序比較兩個抽象路徑名。 此方法定義的排序取決于底層系統(tǒng)。 在 UNIX 系統(tǒng)上,字母大小寫在比較路徑名時很重要。 在 Microsoft Windows 系統(tǒng)上不是這樣。

指定者:

接口 ComparableFile 中的 compareTo

參數(shù):

參數(shù)名稱 參數(shù)描述
pathname 要與此抽象路徑名進行比較的抽象路徑名

返回:

如果參數(shù)等于此抽象路徑名,則為零;如果此抽象路徑名按字典順序小于參數(shù),則值小于零;如果此抽象路徑名按字典順序大于參數(shù),則值大于零

Since:

1.2

equals

public boolean equals(Object obj)

測試此抽象路徑名是否與給定對象相等。 當且僅當參數(shù)不為 null 并且是表示與此抽象路徑名相同的文件或目錄的抽象路徑名時,才返回 true。 兩個抽象路徑名是否相等取決于底層系統(tǒng)。 在 UNIX 系統(tǒng)上,字母大小寫在比較路徑名時很重要。 在 Microsoft Windows 系統(tǒng)上不是這樣。

覆蓋:

類 Object 中的等于

參數(shù):

參數(shù)名稱 參數(shù)描述
obj 要與此抽象路徑名比較的對象

返回:

當且僅當對象相同時才為 true; 否則為 false

hashCode

public int hashCode()

計算此抽象路徑名的哈希碼。 因為抽象路徑名的相等性本質(zhì)上是系統(tǒng)相關的,所以它們的哈希碼的計算也是如此。 在 UNIX 系統(tǒng)上,抽象路徑名的哈希碼等于其路徑名字符串的哈希碼和十進制值 1234321 的異或。在 Microsoft Windows 系統(tǒng)上,哈希碼等于 其路徑名字符串轉換為小寫和十進制值 1234321。在小寫路徑名字符串時不考慮區(qū)域設置。

覆蓋:

類 Object 中的 hashCode

返回:

此抽象路徑名的哈希碼

toString

public String toString()

返回此抽象路徑名的路徑名字符串。 這只是 getPath() 方法返回的字符串。

覆蓋:

類 Object 中的 toString

返回:

此抽象路徑名的字符串形式

toPath

public Path toPath()

返回從 this 抽象路徑構造的 Path 對象。 生成的路徑與默認文件系統(tǒng)相關聯(lián)。

此方法的第一次調(diào)用就像調(diào)用它等同于評估表達式一樣:

 FileSystems.getDefault().getPath(this.getPath()); 

此方法的后續(xù)調(diào)用返回相同的路徑。

如果此抽象路徑名是空的抽象路徑名,則此方法返回可用于訪問當前用戶目錄的路徑。

返回:

從這個抽象路徑構造的路徑

Throws:

Throw名稱 Throw描述
InvalidPathException 如果無法從抽象路徑構造 Path 對象(請參閱 FileSystem.getPath)

Since:

1.7

以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號