鴻蒙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)相關(guān)的路徑名字符串來(lái)命名文件和目錄。 此類呈現(xiàn)分層路徑名的抽象的、與系統(tǒng)無(wú)關(guān)的視圖。 抽象路徑名有兩個(gè)組成部分:

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

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

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

路徑名,無(wú)論是抽象的還是字符串形式的,都可以是絕對(duì)的或相對(duì)的。 絕對(duì)路徑名是完整的,因?yàn)椴恍枰渌畔?lái)定位它表示的文件。 相反,相對(duì)路徑名必須根據(jù)從其他路徑名獲取的信息來(lái)解釋。 默認(rèn)情況下,java.io 包中的類總是根據(jù)當(dāng)前用戶目錄解析相對(duì)路徑名。 此目錄由系統(tǒng)屬性 user.dir 命名,通常是調(diào)用 Java 虛擬機(jī)的目錄。

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

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

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

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

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

File 類的實(shí)例是不可變的;也就是說(shuō),一旦創(chuàng)建,由 File 對(duì)象表示的抽象路徑名永遠(yuǎn)不會(huì)改變。

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

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

Since:

JDK1.0

字段摘要

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

構(gòu)造函數(shù)摘要

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

方法總結(jié)

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

字段詳細(xì)信息

pathSeparator

public static final String pathSeparator

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

pathSeparatorChar

public static final char pathSeparatorChar

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

separator

public static final String separator

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

separatorChar

public static final char separatorChar

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

構(gòu)造函數(shù)詳細(xì)信息

File

public File(String pathname)

通過(guò)將給定的路徑名字符串轉(zhuǎn)換為抽象路徑名來(lái)創(chuàng)建一個(gè)新的 File 實(shí)例。 如果給定的字符串是空字符串,則結(jié)果是空的抽象路徑名。

參數(shù):

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

Throws:

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

File

public File(String parent, String child)

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

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

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

參數(shù):

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

Throws:

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

File

public File(File parent, String child)

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

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

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

參數(shù):

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

Throws:

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

File

public File(URI uri)

通過(guò)將給定的 file: URI 轉(zhuǎn)換為抽象路徑名來(lái)創(chuàng)建一個(gè)新的 File 實(shí)例。

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

對(duì)于給定的抽象路徑名 f,保證

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

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

參數(shù):

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

Throws:

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

Since:

1.4

方法詳情

getName

public String getName()

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

返回:

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

getParent

public String getParent()

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

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

返回:

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

getParentFile

public File getParentFile()

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

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

返回:

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

Since:

1.2

getPath

public String getPath()

將此抽象路徑名轉(zhuǎn)換為路徑名字符串。 生成的字符串使用默認(rèn)的名稱分隔符來(lái)分隔名稱序列中的名稱。

返回:

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

isAbsolute

public boolean isAbsolute()

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

返回:

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

getAbsolutePath

public String getAbsolutePath()

返回此抽象路徑名的絕對(duì)路徑名字符串。

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

返回:

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

Throws:

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

getAbsoluteFile

public File getAbsoluteFile()

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

返回:

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

Throws:

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

Since:

1.2

getCanonicalPath

public String getCanonicalPath() throws IOException

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

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

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

返回:

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

Throws:

Throw名稱 Throw描述
IOException 如果發(fā)生 I/O 錯(cuò)誤,這是可能的,因?yàn)橐?guī)范路徑名的構(gòu)造可能需要文件系統(tǒng)查詢
SecurityException 如果無(wú)法訪問(wèn)所需的系統(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 錯(cuò)誤,這是可能的,因?yàn)橐?guī)范路徑名的構(gòu)造可能需要文件系統(tǒng)查詢
SecurityException 如果無(wú)法訪問(wèn)所需的系統(tǒng)屬性值,或者安全管理器存在且其 SecurityManager.checkRead(java.io.FileDescriptor) 方法拒絕讀取文件

Since:

1.2

toURL

@Deprecated public URL toURL() throws MalformedURLException

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

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

返回:

表示等效文件 URL 的 URL 對(duì)象

Throws:

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

Since:

1.2

toURI

public URI toURI()

構(gòu)造一個(gè)文件:表示此抽象路徑名的 URI。

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

對(duì)于給定的抽象路徑名 f,保證

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

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

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

返回:

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

Throws:

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

Since:

1.4

canRead

public boolean canRead()

測(cè)試應(yīng)用程序是否可以讀取此抽象路徑名表示的文件。 在某些平臺(tái)上,可以使用特殊權(quán)限啟動(dòng) Java 虛擬機(jī),使其能夠讀取標(biāo)記為不可讀的文件。 因此,即使文件沒(méi)有讀取權(quán)限,此方法也可能返回 true。

返回:

當(dāng)且僅當(dāng)此抽象路徑名指定的文件存在并且應(yīng)用程序可以讀取時(shí),才為 true; 否則為 false

Throws:

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

canWrite

public boolean canWrite()

測(cè)試應(yīng)用程序是否可以修改此抽象路徑名表示的文件。 在某些平臺(tái)上,可以使用允許它修改標(biāo)記為只讀的文件的特殊權(quán)限啟動(dòng) Java 虛擬機(jī)。 因此,即使文件被標(biāo)記為只讀,此方法也可能返回 true。

返回:

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

Throws:

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

exists

public boolean exists()

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

返回:

當(dāng)且僅當(dāng)此抽象路徑名表示的文件或目錄存在時(shí)才為 true; 否則為 false

Throws:

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

isDirectory

public boolean isDirectory()

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

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

返回:

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

Throws:

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

isFile

public boolean isFile()

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

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

返回:

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

Throws:

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

isHidden

public boolean isHidden()

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

返回:

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

Throws:

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

Since:

1.2

lastModified

public long lastModified()

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

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

返回:

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

Throws:

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

length

public long length()

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

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

返回:

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

Throws:

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

createNewFile

public boolean createNewFile() throws IOException

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

注意:此方法不應(yīng)用于文件鎖定,因?yàn)樯傻膮f(xié)議不能可靠地工作。 應(yīng)該改用 FileLock 工具。

返回:

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

Throws:

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

Since:

1.2

delete

public boolean delete()

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

請(qǐng)注意,F(xiàn)iles 類定義了 delete 方法以在無(wú)法刪除文件時(shí)拋出 IOException。 這對(duì)于錯(cuò)誤報(bào)告和診斷無(wú)法刪除文件的原因很有用。

返回:

當(dāng)且僅當(dāng)文件或目錄被成功刪除時(shí)為 true; 否則為 false

Throws:

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

deleteOnExit

public void deleteOnExit()

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

一旦請(qǐng)求刪除,就無(wú)法取消請(qǐng)求。 因此,應(yīng)謹(jǐn)慎使用此方法。

注意:此方法不應(yīng)用于文件鎖定,因?yàn)樯傻膮f(xié)議不能可靠地工作。 應(yīng)該改用 FileLock 工具。

Throws:

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

Since:

1.2

list

public String[] list()

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

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

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

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

返回:

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

Throws:

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

list

public String[] list(FilenameFilter filter)

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

參數(shù):

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

返回:

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

Throws:

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

listFiles

public File[] listFiles()

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

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

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

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

返回:

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

Throws:

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

Since:

1.2

listFiles

public File[] listFiles(FilenameFilter filter)

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

參數(shù):

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

返回:

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

Throws:

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

Since:

1.2

listFiles

public File[] listFiles(FileFilter filter)

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

參數(shù):

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

返回:

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

Throws:

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

Since:

1.2

mkdir

public boolean mkdir()

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

返回:

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

Throws:

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

mkdirs

public boolean mkdirs()

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

返回:

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

Throws:

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

renameTo

public boolean renameTo(File dest)

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

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

請(qǐng)注意,F(xiàn)iles 類定義了 move 方法以獨(dú)立于平臺(tái)的方式移動(dòng)或重命名文件。

參數(shù):

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

返回:

當(dāng)且僅當(dāng)重命名成功時(shí)為 true; 否則為 false

Throws:

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

setLastModified

public boolean setLastModified(long time)

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

所有平臺(tái)都支持精確到秒的文件修改時(shí)間,但有些平臺(tái)提供更高的精度。 該參數(shù)將被截?cái)嘁赃m應(yīng)支持的精度。 如果操作成功并且沒(méi)有對(duì)文件進(jìn)行干預(yù)操作,則 lastModified() 方法的下一次調(diào)用將返回傳遞給此方法的(可能被截?cái)嗟模r(shí)間參數(shù)。

參數(shù):

參數(shù)名稱 參數(shù)描述
time 新的最后修改時(shí)間,自紀(jì)元以來(lái)的毫秒數(shù)(格林威治標(biāo)準(zhǔn)時(shí)間 00:00:00,1970 年 1 月 1 日)

返回:

當(dāng)且僅當(dāng)操作成功時(shí)為 true; 否則為 false

Throws:

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

Since:

1.2

setReadOnly

public boolean setReadOnly()

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

返回:

當(dāng)且僅當(dāng)操作成功時(shí)為 true; 否則為 false

Throws:

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

Since:

1.2

setWritable

public boolean setWritable(boolean writable, boolean ownerOnly)

設(shè)置此抽象路徑名的所有者或所有人的寫權(quán)限。 在某些平臺(tái)上,可以使用允許它修改不允許寫入操作的文件的特殊權(quán)限來(lái)啟動(dòng) Java 虛擬機(jī)。

Files 類定義了對(duì)文件屬性(包括文件權(quán)限)進(jìn)行操作的方法。 當(dāng)需要對(duì)文件權(quán)限進(jìn)行更精細(xì)的操作時(shí),可以使用此選項(xiàng)。

參數(shù):

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

返回:

當(dāng)且僅當(dāng)操作成功時(shí)才為 true。 如果用戶無(wú)權(quán)更改此抽象路徑名的訪問(wèn)權(quán)限,則操作將失敗。

Throws:

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

Since:

1.6

setWritable

public boolean setWritable(boolean writable)

設(shè)置所有者對(duì)此抽象路徑名的寫權(quán)限的便捷方法。 在某些平臺(tái)上,可以使用允許它修改不允許寫入操作的文件的特殊權(quán)限來(lái)啟動(dòng) Java 虛擬機(jī)。

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

     file.setWritable(arg, true) 

參數(shù):

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

返回:

當(dāng)且僅當(dāng)操作成功時(shí)才為 true。 如果用戶無(wú)權(quán)更改此抽象路徑名的訪問(wèn)權(quán)限,則操作將失敗。

Throws:

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

Since:

1.6

setReadable

public boolean setReadable(boolean readable, boolean ownerOnly)

設(shè)置此抽象路徑名的所有者或所有人的讀取權(quán)限。 在某些平臺(tái)上,可以使用特殊權(quán)限啟動(dòng) Java 虛擬機(jī),使其能夠讀取標(biāo)記為不可讀的文件。

Files 類定義了對(duì)文件屬性(包括文件權(quán)限)進(jìn)行操作的方法。 當(dāng)需要對(duì)文件權(quán)限進(jìn)行更精細(xì)的操作時(shí),可以使用此選項(xiàng)。

參數(shù):

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

返回:

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

Throws:

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

Since:

1.6

setReadable

public boolean setReadable(boolean readable)

設(shè)置所有者對(duì)此抽象路徑名的讀取權(quán)限的便捷方法。 在某些平臺(tái)上,可以使用特殊權(quán)限啟動(dòng) Java 虛擬機(jī),使其能夠讀取標(biāo)記為不可讀的文件。

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

     file.setReadable(arg, true) 

參數(shù):

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

返回:

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

Throws:

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

Since:

1.6

setExecutable

public boolean setExecutable(boolean executable, boolean ownerOnly)

設(shè)置此抽象路徑名的所有者或所有人的執(zhí)行權(quán)限。 在某些平臺(tái)上,可以使用允許它執(zhí)行未標(biāo)記為可執(zhí)行文件的特殊權(quán)限來(lái)啟動(dòng) Java 虛擬機(jī)。

Files 類定義了對(duì)文件屬性(包括文件權(quán)限)進(jìn)行操作的方法。 當(dāng)需要對(duì)文件權(quán)限進(jìn)行更精細(xì)的操作時(shí),可以使用此選項(xiàng)。

參數(shù):

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

返回:

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

Throws:

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

Since:

1.6

setExecutable

public boolean setExecutable(boolean executable)

設(shè)置此抽象路徑名的所有者執(zhí)行權(quán)限的便捷方法。 在某些平臺(tái)上,可以使用允許它執(zhí)行未標(biāo)記為可執(zhí)行文件的特殊權(quán)限來(lái)啟動(dòng) Java 虛擬機(jī)。

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

     file.setExecutable(arg, true) 

參數(shù):

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

返回:

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

Throws:

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

Since:

1.6

canExecute

public boolean canExecute()

測(cè)試應(yīng)用程序是否可以執(zhí)行此抽象路徑名表示的文件。 在某些平臺(tái)上,可以使用允許它執(zhí)行未標(biāo)記為可執(zhí)行文件的特殊權(quán)限來(lái)啟動(dòng) Java 虛擬機(jī)。 因此,即使文件沒(méi)有執(zhí)行權(quán)限,此方法也可能返回 true。

返回:

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

Throws:

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

Since:

1.6

listRoots

public static File[] listRoots()

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

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

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

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

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

返回:

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

Since:

1.2

getTotalSpace

public long getTotalSpace()

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

返回:

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

Throws:

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

Since:

1.6

getFreeSpace

public long getFreeSpace()

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

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

返回:

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

Throws:

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

Since:

1.6

getUsableSpace

public long getUsableSpace()

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

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

返回:

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

Throws:

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

Since:

1.6

createTempFile

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

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

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

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

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

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

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

參數(shù):

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

返回:

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

Throws:

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

Since:

1.2

createTempFile

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

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

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

參數(shù):

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

返回:

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

Throws:

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

Since:

1.2

compareTo

public int compareTo(File pathname)

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

指定者:

接口 ComparableFile 中的 compareTo

參數(shù):

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

返回:

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

Since:

1.2

equals

public boolean equals(Object obj)

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

覆蓋:

類 Object 中的等于

參數(shù):

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

返回:

當(dāng)且僅當(dāng)對(duì)象相同時(shí)才為 true; 否則為 false

hashCode

public int hashCode()

計(jì)算此抽象路徑名的哈希碼。 因?yàn)槌橄舐窂矫南嗟刃员举|(zhì)上是系統(tǒng)相關(guān)的,所以它們的哈希碼的計(jì)算也是如此。 在 UNIX 系統(tǒng)上,抽象路徑名的哈希碼等于其路徑名字符串的哈希碼和十進(jìn)制值 1234321 的異或。在 Microsoft Windows 系統(tǒng)上,哈希碼等于 其路徑名字符串轉(zhuǎn)換為小寫和十進(jìn)制值 1234321。在小寫路徑名字符串時(shí)不考慮區(qū)域設(shè)置。

覆蓋:

類 Object 中的 hashCode

返回:

此抽象路徑名的哈希碼

toString

public String toString()

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

覆蓋:

類 Object 中的 toString

返回:

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

toPath

public Path toPath()

返回從 this 抽象路徑構(gòu)造的 Path 對(duì)象。 生成的路徑與默認(rèn)文件系統(tǒng)相關(guān)聯(lián)。

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

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

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

如果此抽象路徑名是空的抽象路徑名,則此方法返回可用于訪問(wèn)當(dāng)前用戶目錄的路徑。

返回:

從這個(gè)抽象路徑構(gòu)造的路徑

Throws:

Throw名稱 Throw描述
InvalidPathException 如果無(wú)法從抽象路徑構(gòu)造 Path 對(duì)象(請(qǐng)參閱 FileSystem.getPath)

Since:

1.7

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

掃描二維碼

下載編程獅App

公眾號(hào)
微信公眾號(hào)

編程獅公眾號(hào)