java.io
類 File
java.io.File
所有已實現的接口:
Serializable, Comparable<File>
public class File
extends Object
implements Serializable, Comparable<File>
文件和目錄路徑名的抽象表示形式。
用戶界面和操作系統使用與系統相關的路徑名字符串來命名文件和目錄。此類呈現分層路徑名的一個抽象的、與系統無關的視圖。抽象路徑名 有兩個組件:
- 一個可選的與系統有關的前綴 字符串,比如盤符,"/" 表示 UNIX 中的根目錄,"\\\\" 表示 Microsoft Windows UNC 路徑名。
- 零個或更多字符串名稱 的序列。
抽象路徑名中的第一個名稱是目錄名,對於 Microsoft Windows UNC 路徑名則是主機名。抽象路徑名中第一個名稱之后的每個名稱表示一個目錄;最后一個名稱既可以表示目錄,也可以表示文件。空抽象路徑名沒有前綴和名稱序列。
路徑名字符串與抽象路徑名之間的轉換與系統有關。將抽象路徑名轉換為路徑名字符串時,每個名稱與下一個名稱之間用一個默認分隔符隔開。默認名稱分隔符由系統屬性 file.separator 定義,可通過此類的公共靜態字段 separator和 separatorChar使其可用。將路徑名字符串轉換為抽象路徑名時,可以使用默認名稱分隔符或者底層系統支持的任何其他名稱分隔符來分隔其中的名稱。
無論是抽象路徑名還是路徑名字符串,都可以是絕對路徑名或相對 路徑名。絕對路徑名是完整的路徑名,不需要任何其他信息就可以定位它所表示的文件。相反,相對路徑名必須使用取自其他路徑名的信息進行解釋。默認情況下,java.io 包中的類總是根據當前用戶目錄來解析相對路徑名。此目錄由系統屬性user.dir 指定,通常是 Java 虛擬機的調用目錄。
調用此類的 getParent()方法可以獲取抽象路徑名的父 路徑名,它由路徑名前綴以及路徑名名稱序列中的每個名稱(最后一個除外)組成。對於任何具有絕對抽象路徑名的 File 對象,如果其絕對抽象路徑名以某個目錄的絕對路徑名開頭,那么該目錄的絕對路徑名是該 File 對象的祖先。例如,抽象路徑名 "/usr" 表示的目錄是路徑名 "/usr/local/bin" 所表示目錄的一個祖先。
在處理 UNIX 平台的根目錄,以及 Microsoft Windows 平台的盤符、根目錄和 UNC 路徑名時,將用到前綴這一概念。如下所示:
- 對於 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) |
|
|
|
File(String parent, String child) |
|
|
方法摘要 |
|
boolean |
canExecute() |
boolean |
canRead() |
boolean |
canWrite() |
int |
|
boolean |
createNewFile() |
static File |
createTempFile(String prefix, String suffix) |
static File |
createTempFile(String prefix, String suffix, File directory) |
boolean |
delete() |
void |
deleteOnExit() |
boolean |
|
boolean |
exists() |
getAbsoluteFile() |
|
getAbsolutePath() |
|
getCanonicalFile() |
|
getCanonicalPath() |
|
long |
getFreeSpace() |
getName() |
|
getParent() |
|
getParentFile() |
|
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 |
|
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) |
toString() |
|
toURI() |
|
toURL() |
從類 java.lang.Object 繼承的方法 |
clone, finalize, getClass, notify, notifyAll, wait, wait, wait |
字段詳細信息 |
public static final char separatorChar
與系統有關的默認名稱分隔符。此字段被初始化為包含系統屬性 file.separator 值的第一個字符。在 UNIX 系統上,此字段的值為 '/';在 Microsoft Windows 系統上,它為 '\\'。
另請參見:
System.getProperty(java.lang.String)
public static final String separator
與系統有關的默認名稱分隔符,為了方便,它被表示為一個字符串。此字符串只包含一個字符,即separatorChar。
public static final char pathSeparatorChar
與系統有關的路徑分隔符。此字段被初始為包含系統屬性 path.separator 值的第一個字符。此字符用於分隔以路徑列表 形式給定的文件序列中的文件名。在 UNIX 系統上,此字段為 ':';在Microsoft Windows 系統上,它為 ';'。
另請參見:
System.getProperty(java.lang.String)
public static final String pathSeparator
與系統有關的路徑分隔符,為了方便,它被表示為一個字符串。此字符串只包含一個字符,即pathSeparatorChar。
public File(String pathname)
通過將給定路徑名字符串轉換為抽象路徑名來創建一個新 File 實例。如果給定字符串是空字符串,那么結果是空抽象路徑名。
參數:
pathname - 路徑名字符串
拋出:
NullPointerException - 如果 pathname 參數為 null
public File(String parent,
String child)
根據 parent 路徑名字符串和 child 路徑名字符串創建一個新 File 實例。
如果 parent 為 null,則創建一個新的 File 實例,這與調用以給定 child 路徑名字符串作為參數的單參數 File 構造方法效果一樣。
否則,parent 路徑名字符串用於表示目錄,child 路徑名字符串用於表示目錄或文件。如果 child 路徑名字符串是絕對路徑名,則用與系統有關的方式將它轉換為一個相對路徑名。如果 parent 是空字符串,則通過將 child 轉換為抽象路徑名,並根據與系統有關的默認目錄解析結果來創建新的 File 實例。否則,將每個路徑名字符串轉換為一個抽象路徑名,並根據父抽象路徑名解析子抽象路徑名。
參數:
parent - 父路徑名字符串
child - 子路徑名字符串
拋出:
NullPointerException - 如果 child 為 null
public File(File parent,
String child)
根據 parent 抽象路徑名和 child 路徑名字符串創建一個新 File 實例。
如果 parent 為 null,則創建一個新的 File 實例,這與調用給定 child 路徑名字符串的單參數 File 構造方法的效果一樣。
否則,parent 抽象路徑名用於表示目錄,child 路徑名字符串用於表示目錄或文件。如果 child 路徑名字符串是絕對路徑名,則用與系統有關的方式將它轉換為一個相對路徑名。如果 parent 是空抽象路徑名,則通過將 child 轉換為抽象路徑名,並根據與系統有關的默認目錄解析結果來創建新的 File 實例。否則,將每個路徑名字符串轉換為一個抽象路徑名,並根據父抽象路徑名解析子抽象路徑名。
參數:
parent - 父抽象路徑名
child - 子路徑名字符串
拋出:
NullPointerException - 如果 child 為 null
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、非空的 path 組件,以及未定義的 authority、query 和fragment 組件組成
拋出:
NullPointerException - 如果 uri 為 null
IllegalArgumentException - 如果關於參數的前提不成立
從以下版本開始:
1.4
另請參見:
public String getName()
返回由此抽象路徑名表示的文件或目錄的名稱。該名稱是路徑名名稱序列中的最后一個名稱。如果路徑名名稱序列為空,則返回空字符串。
返回:
此抽象路徑名表示的文件或目錄的名稱;如果路徑名的名稱序列為空,則返回空字符串
public String getParent()
返回此抽象路徑名父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null。
抽象路徑名的父 路徑名由路徑名的前綴(如果有),以及路徑名名稱序列中最后一個名稱以外的所有名稱組成。如果名稱序列為空,那么該路徑名沒有指定父目錄。
返回:
此抽象路徑名指定父目錄的路徑名字符串;如果此路徑名沒有指定父目錄,則返回 null
public File getParentFile()
返回此抽象路徑名父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null。
抽象路徑名的父 路徑名由路徑名的前綴(如果有),以及路徑名名稱序列中最后一個名稱以外的所有名稱組成。如果名稱序列為空,那么該路徑名沒有指定父目錄。
返回:
此抽象路徑名指定父目錄的抽象路徑名;如果此路徑名沒有指定父目錄,則返回 null
從以下版本開始:
1.2
public String getPath()
將此抽象路徑名轉換為一個路徑名字符串。所得字符串使用默認名稱分隔符分隔名稱序列中的名稱。
返回:
此抽象路徑名的字符串形式
public boolean isAbsolute()
測試此抽象路徑名是否為絕對路徑名。絕對路徑名的定義與系統有關。在 UNIX 系統上,如果路徑名的前綴是 "/",那么該路徑名是絕對路徑名。在 Microsoft Windows 系統上,如果路徑名的前綴是后跟"\\" 的盤符,或者是 "\\\\",那么該路徑名是絕對路徑名。
返回:
如果此抽象路徑名是絕對路徑名,則返回 true;否則返回 false
public String getAbsolutePath()
返回此抽象路徑名的絕對路徑名字符串。
如果此抽象路徑名已經是絕對路徑名,則返回該路徑名字符串,這與 getPath()方法一樣。如果此抽象路徑名是空抽象路徑名,則返回當前用戶目錄的路徑名字符串,該目錄由系統屬性 user.dir指定。否則,使用與系統有關的方式解析此路徑名。在 UNIX 系統上,根據當前用戶目錄解析相對路徑名,可使該路徑名成為絕對路徑名。在 Microsoft Windows 系統上,根據路徑名指定的當前驅動器目錄(如果有)解析相對路徑名,可使該路徑名成為絕對路徑名;否則,可以根據當前用戶目錄解析它。
返回:
絕對路徑名字符串,它與此抽象路徑名表示相同的文件或目錄
拋出:
SecurityException - 如果無法訪問所需的系統屬性值。
另請參見:
public File getAbsoluteFile()
返回此抽象路徑名的絕對路徑名形式。等同於 new File(this.getAbsolutePath())。
返回:
絕對抽象路徑名,它與此抽象路徑名表示相同的文件或目錄
拋出:
SecurityException - 如果無法訪問所需的系統屬性值。
從以下版本開始:
1.2
public String getCanonicalPath()
throws IOException
返回此抽象路徑名的規范路徑名字符串。
規范路徑名是絕對路徑名,並且是惟一的。規范路徑名的准確定義與系統有關。如有必要,此方法首先將路徑名轉換為絕對路徑名,這與調用 getAbsolutePath()方法的效果一樣,然后用與系統相關的方式將它映射到其惟一路徑名。這通常涉及到從路徑名中移除多余的名稱(比如"." 和 "..")、解析符號連接(對於 UNIX 平台),以及將驅動器號轉換為標准大小寫形式(對於 MicrosoftWindows 平台)。
每個表示現存文件或目錄的路徑名都有一個惟一的規范形式。每個表示不存在文件或目錄的路徑名也有一個惟一的規范形式。不存在文件或目錄路徑名的規范形式可能不同於創建文件或目錄之后同一路徑名的規范形式。同樣,現存文件或目錄路徑名的規范形式可能不同於刪除文件或目錄之后同一路徑名的規范形式。
返回:
規范路徑名字符串,它與此抽象路徑名表示相同的文件或目錄
拋出:
IOException - 如果發生 I/O 錯誤(可能是因為構造規范路徑名需要進行文件系統查詢)
SecurityException - 如果無法訪問所需的系統屬性值,或者存在安全管理器,且其SecurityManager.checkRead(java.io.FileDescriptor)方法拒絕對文件進行讀訪問
從以下版本開始:
JDK1.1
public File getCanonicalFile()
throws IOException
返回此抽象路徑名的規范形式。等同於 new File(this.getCanonicalPath())。
返回:
規范路徑名字符串,它與此抽象路徑名表示相同的文件或目錄
拋出:
IOException - 如果發生 I/O 錯誤(可能是因為構造規范路徑名需要進行文件系統查詢)
SecurityException - 如果無法訪問所需的系統屬性值,或者存在安全管理器,且其SecurityManager.checkRead(java.io.FileDescriptor)方法拒絕對文件進行讀訪問
從以下版本開始:
1.2
public URL toURL()
throws MalformedURLException
已過時。 此方法不會自動轉義 URL 中的非法字符。建議新的代碼使用以下方式將抽象路徑名轉換為 URL:首先通過 toURI方法將其轉換為 URI,然后通過 URI.toURL方法將 URI 裝換為 URL。
將此抽象路徑名轉換為一個file: URL。該 URL 的具體形式與系統有關。如果可以確定此抽象路徑名表示的文件是一個目錄,那么所得 URL 將以斜杠結束。
返回:
表示等價文件 URL 的 URL 對象
拋出:
MalformedURLException - 如果無法將路徑解析為 URL
從以下版本開始:
1.2
另請參見:
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()
public boolean canRead()
測試應用程序是否可以讀取此抽象路徑名表示的文件。
返回:
當且僅當此抽象路徑名指定的文件存在且 可被應用程序讀取時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對文件進行讀訪問
public boolean canWrite()
測試應用程序是否可以修改此抽象路徑名表示的文件。
返回:
當且僅當文件系統實際包含此抽象路徑名表示的文件且 允許應用程序對該文件進行寫入時,返回 true;否則返回 false。
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkWrite(java.lang.String)方法拒絕對文件進行寫訪問
public boolean exists()
測試此抽象路徑名表示的文件或目錄是否存在。
返回:
當且僅當此抽象路徑名表示的文件或目錄存在時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對文件或目錄進行寫訪問
public boolean isDirectory()
測試此抽象路徑名表示的文件是否是一個目錄。
返回:
當且僅當此抽象路徑名表示的文件存在且 是一個目錄時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對文件進行讀訪問
public boolean isFile()
測試此抽象路徑名表示的文件是否是一個標准文件。如果該文件不是一個目錄,並且滿足其他與系統有關的標准,那么該文件是標准文件。由 Java 應用程序創建的所有非目錄文件一定是標准文件。
返回:
當且僅當此抽象路徑名表示的文件存在且 是一個標准文件時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對文件進行讀訪問
public boolean isHidden()
測試此抽象路徑名指定的文件是否是一個隱藏文件。隱藏 的具體定義與系統有關。在 UNIX 系統上,如果文件名以句點字符 ('.') 開頭,則認為該文件被隱藏。在 Microsoft Windows 系統上,如果在文件系統中文件被標記為隱藏,則認為該文件被隱藏。
返回:
當且僅當此抽象路徑名表示的文件根據底層平台約定是隱藏文件時,返回 true
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對文件進行讀訪問
從以下版本開始:
1.2
public long lastModified()
返回此抽象路徑名表示的文件最后一次被修改的時間。
返回:
表示文件最后一次被修改的時間的long 值,用與時間點(1970 年 1 月 1 日,00:00:00 GMT)之間的毫秒數表示;如果該文件不存在,或者發生 I/O 錯誤,則返回 0L
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對文件進行讀訪問
public long length()
返回由此抽象路徑名表示的文件的長度。如果此路徑名表示一個目錄,則返回值是不確定的。
返回:
此抽象路徑名表示的文件的長度,以字節為單位;如果文件不存在,則返回 0L。對於表示特定於系統的實體(比如設備或管道)的路徑名,某些操作系統可能返回 0L。
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對文件進行讀訪問
public boolean createNewFile()
throws IOException
當且僅當不存在具有此抽象路徑名指定名稱的文件時,不可分地創建一個新的空文件。檢查文件是否存在,若不存在則創建該文件,這是單個操作,對於其他所有可能影響該文件的文件系統活動來說,該操作是不可分的。
注:此方法不應該 用於文件鎖定,因為所得協議可能無法可靠地工作。應該使用 FileLock 機制替代。
返回:
如果指定的文件不存在並成功地創建,則返回 true;如果指定的文件已經存在,則返回 false
拋出:
IOException - 如果發生 I/O 錯誤
SecurityException - 如果存在安全管理器,且其SecurityManager.checkWrite(java.lang.String)方法拒絕對文件進行寫訪問
從以下版本開始:
1.2
public boolean delete()
刪除此抽象路徑名表示的文件或目錄。如果此路徑名表示一個目錄,則該目錄必須為空才能刪除。
返回:
當且僅當成功刪除文件或目錄時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkDelete(java.lang.String)方法拒絕對文件進行刪除訪問
public void deleteOnExit()
在虛擬機終止時,請求刪除此抽象路徑名表示的文件或目錄。 文件(或目錄)將以與注冊相反的順序刪除。調用此方法刪除已注冊為刪除的文件或目錄無效。根據 Java 語言規范中的定義,只有在虛擬機正常終止時,才會嘗試執行刪除操作。
一旦請求了刪除操作,就無法取消該請求。所以應小心使用此方法。
注:此方法不應該 用於文件鎖定,因為所得協議可能無法可靠地工作。應該使用 FileLock 設施替代。
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkDelete(java.lang.String)方法拒絕對文件進行刪除訪問
從以下版本開始:
1.2
另請參見:
public String[] list()
返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。
如果此抽象路徑名不表示一個目錄,那么此方法將返回 null。否則返回一個字符串數組,每個數組元素對應目錄中的每個文件或目錄。表示目錄本身及其父目錄的名稱不包括在結果中。每個字符串是一個文件名,而不是一條完整路徑。
不保證所得數組中的相同字符串將以特定順序出現,特別是不保證它們按字母順序出現。
返回:
字符串數組,這些字符串指定此抽象路徑名表示的目錄中的文件和目錄。如果目錄為空,那么數組也將為空。如果此抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對目錄進行讀訪問
public String[] list(FilenameFilter filter)
返回一個字符串數組,這些字符串指定此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。除了返回數組中的字符串必須滿足過濾器外,此方法的行為與list()方法相同。如果給定 filter 為 null,則接受所有名稱。否則,當且僅當在此抽象路徑名及其表示的目錄中的文件名或目錄名上調用過濾器的FilenameFilter.accept(java.io.File,java.lang.String) 方法返回 true 時,該名稱才滿足過濾器。
參數:
filter - 文件名過濾器
返回:
字符串數組,這些字符串指定此抽象路徑名表示的目錄中給定 filter 能接受的文件和目錄。如果目錄為空,或者沒有名稱被過濾器接受,那么該數組將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對目錄進行讀訪問
public File[] listFiles()
返回一個抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件。
如果此抽象路徑名不表示一個目錄,那么此方法將返回 null。否則返回一個 File 對象數組,每個數組元素對應目錄中的每個文件或目錄。表示目錄本身及其父目錄的名稱不包括在結果中。得到的每個抽象路徑名都是根據此抽象路徑名,使用File(File,String) 構造方法構造的。所以,如果此路徑名是絕對路徑名,那么得到的每個路徑名都是絕對路徑名;如果此路徑名是相對路徑名,那么得到的每個路徑名都是相對於同一目錄的路徑名。
不保證所得數組中的相同字符串將以特定順序出現,特別是不保證它們按字母順序出現。
返回:
抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件和目錄。如果目錄為空,那么數組也將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對目錄進行讀訪問
從以下版本開始:
1.2
public File[] listFiles(FilenameFilter filter)
返回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。除了返回數組中的路徑名必須滿足過濾器外,此方法的行為與listFiles()方法相同。如果給定 filter 為 null,則接受所有路徑名。否則,當且僅當在此抽象路徑名及其表示的目錄中的文件名或目錄名上調用過濾器的FilenameFilter.accept(java.io.File,java.lang.String) 方法返回 true 時,該路徑名才滿足過濾器。
參數:
filter - 文件名過濾器
返回:
抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件和目錄。如果目錄為空,那么數組也將為空。如果此抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對目錄進行讀訪問
從以下版本開始:
1.2
public File[] listFiles(FileFilter filter)
返回抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中滿足指定過濾器的文件和目錄。除了返回數組中的路徑名必須滿足過濾器外,此方法的行為與listFiles()方法相同。如果給定 filter 為 null,則接受所有路徑名。否則,當且僅當在路徑名上調用過濾器的FileFilter.accept(java.io.File)方法返回 true 時,該路徑名才滿足過濾器。
參數:
filter - 文件過濾器
返回:
抽象路徑名數組,這些路徑名表示此抽象路徑名表示的目錄中的文件和目錄。如果目錄為空,那么數組也將為空。如果抽象路徑名不表示一個目錄,或者發生 I/O 錯誤,則返回 null。
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法拒絕對目錄進行讀訪問
從以下版本開始:
1.2
public boolean mkdir()
創建此抽象路徑名指定的目錄。
返回:
當且僅當已創建目錄時,返回true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkWrite(java.lang.String)方法不允許創建指定的目錄
public boolean mkdirs()
創建此抽象路徑名指定的目錄,包括所有必需但不存在的父目錄。注意,此操作失敗時也可能已經成功地創建了一部分必需的父目錄。
返回:
當且僅當已創建目錄以及所有必需的父目錄時,返回 true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkRead(java.lang.String)方法不允許驗證指定目錄和所有必需的父目錄是否存在;或者 SecurityManager.checkWrite(java.lang.String)方法不允許創建指定的目錄和所有必需的父目錄
public boolean renameTo(File dest)
重新命名此抽象路徑名表示的文件。
此方法行為的許多方面都是與平台有關的:重命名操作無法將一個文件從一個文件系統移動到另一個文件系統,該操作不是不可分的,如果已經存在具有目標抽象路徑名的文件,那么該操作可能無法獲得成功。應該始終檢查返回值,以確保重命名操作成功。
參數:
dest - 指定文件的新抽象路徑名
返回:
當且僅當重命名成功時,返回true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkWrite(java.lang.String)方法拒絕對原路徑名和新路徑名進行寫訪問
NullPointerException - 如果參數 dest 為 null
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
public boolean setReadOnly()
標記此抽象路徑名指定的文件或目錄,從而只能對其進行讀操作。調用此方法后,可以保證在被刪除或被標記為允許寫訪問之前,文件或目錄不會發生更改。是否可以刪除某個只讀文件或目錄則取決於底層系統。
返回:
當且僅當該操作成功時,返回true;否則返回 false
拋出:
SecurityException - 如果存在安全管理器,且其SecurityManager.checkWrite(java.lang.String)方法拒絕對指定文件進行寫訪問
從以下版本開始:
1.2
public boolean setWritable(boolean writable,
boolean ownerOnly)
設置此抽象路徑名的所有者或所有用戶的寫權限。
參數:
writable - 如果為 true,則設置允許寫操作的訪問權限;如果為 false,則不允許寫操作。
ownerOnly - 如果為 true,則寫權限只適用於所有者的寫權限;否則適用於所有用戶。如果底層文件系統不能區分所有者寫權限與其他寫權限,那么無論該參數為何值,寫權限將適用於所有用戶。
返回:
當且僅當操作成功時返回 true。如果用戶不具有更改此抽象路徑名訪問權限的權限,那么操作將失敗。
拋出:
SecurityException - 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒絕對指定文件進行寫訪問。
從以下版本開始:
1.6
public boolean setWritable(boolean writable)
設置此抽象路徑名所有者寫權限的一個便捷方法。
此方法 file.setWritable(arg) 形式的調用與以下調用的行為完全相同:
file.setWritable(arg, true)
參數:
writable - 如果為 true,則設置允許寫操作的訪問權限;如果為 false,則不允許寫操作。
返回:
當且僅當操作成功時返回 true。如果用戶不具有更改此抽象路徑名訪問權限的權限,那么操作將失敗。
拋出:
SecurityException - 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒絕對文件進行寫訪問。
從以下版本開始:
1.6
public boolean setReadable(boolean readable,
boolean ownerOnly)
設置此抽象路徑名的所有者或所有用戶的讀權限。
參數:
readable - 如果為 true,則設置允許讀操作的訪問權限;如果為 false,則不允許讀操作。
ownerOnly - 如果為 true,則讀權限只適用於所有者的讀權限;否則適用於所有用戶。如果底層文件系統不能區分所有者讀權限與其他讀權限,那么無論該參數為何值,讀權限將適用於所有用戶。
返回:
當且僅當操作成功時返回 true。如果用戶不具有更改此抽象路徑名訪問權限的權限,那么操作將失敗。如果 readable 為 false,並且底層文件系統不實現讀權限,那么操作也將失敗。
拋出:
SecurityException - 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒絕對文件進行寫訪問。
從以下版本開始:
1.6
public boolean setReadable(boolean readable)
設置此抽象路徑名所有者讀權限的一個便捷方法。
此方法 file.setReadable(arg) 形式的調用與以下調用的行為完全相同:
file.setReadable(arg, true)
參數:
readable - 如果為 true,則設置允許讀操作的訪問權限;如果為 false,則不允許讀操作。
返回:
當且僅當操作成功時返回 true。如果用戶不具有更改此抽象路徑名訪問權限的權限,那么操作將失敗。如果 readable 為 false,並且底層文件系統不實現讀權限,那么操作也將失敗。
拋出:
SecurityException - 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒絕對文件進行寫訪問。
從以下版本開始:
1.6
public boolean setExecutable(boolean executable,
boolean ownerOnly)
設置此抽象路徑名的所有者或所有用戶的執行權限。
參數:
executable - 如果為 true,則設置允許執行操作的訪問權限;如果為 false,則不允許執行操作。
ownerOnly - 如果為 true,則執行權限只適用於所有者的執行權限;否則適用於所有用戶。如果底層文件系統不能區分所有者執行權限與其他執行權限,那么無論該參數為何值,執行權限將適用於所有用戶。
返回:
當且僅當操作成功時返回 true。如果用戶不具有更改此抽象路徑名訪問權限的權限,那么操作將失敗。如果 executable 為 false,並且底層文件系統不實現執行權限,那么操作也將失敗。
拋出:
SecurityException - 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒絕對文件進行寫訪問。
從以下版本開始:
1.6
public boolean setExecutable(boolean executable)
設置此抽象路徑名所有者執行權限的一個便捷方法。
此方法 file.setExcutable(arg) 形式的調用與以下調用的行為完全相同:
file.setExecutable(arg, true)
參數:
executable - 如果為 true,則設置允許執行操作的訪問權限;如果為 false,則不允許執行操作。
返回:
當且僅當操作成功時返回 true。如果用戶不具有更改此抽象路徑名訪問權限的權限,那么操作將失敗。如果 executable 為 false,並且底層文件系統不實現執行權限,那么操作也將失敗。
拋出:
SecurityException - 如果安全管理器存在且其SecurityManager.checkWrite(java.lang.String)方法拒絕對文件進行寫訪問。
從以下版本開始:
1.6
public boolean canExecute()
測試應用程序是否可以執行此抽象路徑名表示的文件。
返回:
當且僅當抽象路徑名存在且 允許應用程序執行文件時返回 true。
拋出:
SecurityException - 如果安全管理器存在且其SecurityManager.checkExec(java.lang.String)方法拒絕對文件進行執行訪問。
從以下版本開始:
1.6
public static File[] listRoots()
列出可用的文件系統根。
特定 Java 平台可以支持零個或更多個分層組織的文件系統。每個文件系統有一個 root 目錄,可以從這里到達文件系統中的所有其他文件。例如,Windows 平台為每個活動驅動器提供了一個根目錄;UNIX 平台只有一個根目錄,即 "/"。可用文件系統根的設置受各種系統級操作的影響,比如可移動介質的插入和彈出,以及斷開或卸載那些物理磁盤或虛擬磁盤。
此方法返回一個 File 對象數組,這些對象表示可用文件系統根的根目錄。可以保證本地機器上物理存在的任何文件的規范路徑名都以此方法返回的根之一開始。
位於其他一些機器上的文件的規范路徑名是通過遠程文件系統協議(比如 SMB 或 NFS)訪問的,它們可能以此方法返回的根之一開始,也可能不是這樣。如果遠程文件的路徑名在語法上無法與本地文件的路徑名進行區分,那么它將以此方法返回的根之一開始。例如,此方法將返回表示 Windows 平台上映射為網絡驅動器根目錄的 File 對象,而不返回包含 UNC 路徑名的 File 對象。
與此類中的大多數方法不同,此方法不拋出安全性異常。如果存在安全管理器,且其 SecurityManager.checkRead(java.lang.String)方法拒絕對特定根目錄進行讀訪問,那么該目錄將不會出現在結果中。
返回:
表示可用文件系統根的 File 對象數組;如果無法確定根集,則返回 null。如果沒有文件系統,那么該數組將為空。
從以下版本開始:
1.2
public long getTotalSpace()
返回此抽象路徑名指定的分區大小。
返回:
分區的大小,以字節為單位;如果此抽象路徑名沒有指定分區,則返回 0L。
拋出:
SecurityException - 如果安裝了安全管理器,並且安全管理器拒絕RuntimePermission("getFileSystemAttributes"),或者其SecurityManager.checkRead(String)方法拒絕對此抽象路徑名指定的文件進行讀訪問
從以下版本開始:
1.6
public long getFreeSpace()
返回此抽象路徑名指定的分區中未分配的字節數。
返回的未分配字節數是一個提示,而不是一個保證,只能使用這些字節的一部分。未分配字節數很可能在此調用后立即與實際相符。某些外部 I/O 操作可能使其與實際不符,這些操作包括那些在此虛擬機外部系統上進行的操作。此方法不保證對此文件系統的寫操作將成功。
返回:
分區上的未分配字節數;如果抽象路徑名沒有指定分區,則返回 0L。返回值將小於等於 getTotalSpace()返回的總文件系統大小。
拋出:
SecurityException - 如果安裝了安全管理器,並且安全管理器拒絕RuntimePermission("getFileSystemAttributes"),或者其SecurityManager.checkRead(String)方法拒絕對此抽象路徑名指定的文件進行讀訪問
從以下版本開始:
1.6
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
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
public int compareTo(File pathname)
按字母順序比較兩個抽象路徑名。此方法定義的順序取決於底層系統。在 UNIX 系統上,比較路徑名時,字母大小寫通常很重要,而在 MicrosoftWindows 系統上,這通常不重要。
指定者:
接口 Comparable<File> 中的 compareTo
參數:
pathname - 將與此抽象路徑名進行比較的抽象路徑名
返回:
如果該參數等於此抽象路徑名,則返回零;如果此抽象路徑名在字母順序上小於該參數,則返回小於零的值;如果此抽象路徑名在字母順序上大於該參數,則返回大於零的值
從以下版本開始:
1.2
public boolean equals(Object obj)
測試此抽象路徑名與給定對象是否相等。當且僅當該參數不是 null,而是一個與此抽象路徑名表示相同的文件或目錄的抽象路徑名時,返回 true。兩個抽象路徑名是否相等取決於底層系統。在 UNIX 系統上,比較路徑名時,字母大小寫通常很重要,而在 MicrosoftWindows 系統上,這通常不重要。
覆蓋:
參數:
obj - 要與此抽象路徑名進行比較的對象
返回:
當且僅當對象相同時,返回true;否則返回 false
另請參見:
public int hashCode()
計算此抽象路徑名的哈希碼。因為抽象路徑名的相等性與系統有關,所以對其哈希碼的計算也與系統有關。在 UNIX 系統上,抽象路徑名的哈希碼等於其路徑名字符串和十進制值 1234321 的哈希碼的異或。在 Microsoft Windows 系統上,哈希碼等於其轉換為小寫的路徑名字符串和十進制值 1234321 的哈希碼的異或。在將路徑名字符串轉換為小寫時不考慮語言環境。
覆蓋:
返回:
此抽象路徑名的哈希碼
另請參見:
Object.equals(java.lang.Object),Hashtable
public String toString()
返回此抽象路徑名的路徑名字符串。該字符串就是 getPath()方法返回的字符串。
覆蓋:
返回:
此抽象路徑名的字符串形式