Java手冊
java.io
類 File
java.lang.Object
java.io.File
- 所有已實現的接口:
- Serializable, Comparable< File>
public class Fileextends Objectimplements 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) 根據 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 |
實際應用
創建一個文件
import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException{ //將傳入的路徑標記為了一個file對象 File file = new File("E:\\test"); //創建file對象指定的文件 boolean b2 = file.createNewFile(); System.out.println(b2); } }
運行結果:
true
E 盤里面出現了新的文件夾
注意:
1、創建文件的時候需要調用方法:createNewFile()
2、File file = new File("E:\\test");
先把路徑傳給 file 對象,然后createNewFile()這個方法開始根據傳過來的路徑檢測是否在此路徑下有對應的文件,
如果有,則創建失敗,返回flase,如果沒有,則創建指定的文件,並返回true。
3、只能創建文件不能創建目錄
刪除一個文件
import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException{ //將傳入的路徑標記為了一個file對象 File file = new File("E:\\test"); //刪除文件file對象對應的文件 boolean b1 = file.delete(); System.out.println(b1); } }
運行結果:
true
此時,file 對象指向的文件被刪除。
注意:
1、刪除文件或者目錄的過程是不可逆的
2、刪除目錄時,要求目錄必須是空目錄
創建一層目錄
import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException{ //將傳入的路徑標記為了一個file對象 File file = new File("E:\\test"); //創建一層目錄 boolean b = file.mkdir(); System.out.println(b); } }
運行結果:
注意:
1、當且僅當這個目錄不存在的時候才會創建
2、只能創建一層目錄
創建多層目錄
import java.io.File; import java.io.IOException; public class FileDemo2 { public static void main(String[] args) throws IOException{ //將傳入的路徑標記為了一個file對象 File file = new File("E:\\test\\cjj\\lnn"); //創建多層目錄 boolean b = file.mkdirs(); System.out.println(b); } }
運行結果: