一、基本概念
1、File類是文件路徑或目錄路徑的抽象表示。
換言之,File類的實例(即File對象)可能指向或可能不指向文件系統中的真實文件。
2、File類是與操作系統無關的。
一個File對象,包括兩個部分:前綴、字符串名,即“前綴+字符串名+前綴+字符串名…”。
(1) 不同的操作系統起始的前綴不一樣,在windows中使用的是磁盤驅動器名加上":",如“C:\”,而UNIX中使用的是“/usr”。
Java虛擬機的運行目錄是我們應用程序的起始目錄,該目錄可以通過系統屬性user.dir獲得,從而可以屏蔽該差異。(當然,如果你設置其他起始路徑,如文件的上傳路徑,你也可以通過在配置文件中設置配置參數的方式來屏蔽該差異)
String workingDir = System.getProperty("user.dir");
(2) 不同的操作系統使用不同的字符來分隔路徑名中的兩個部分。例如,Windows在路徑名中使用反斜槓(\)作爲名稱分隔符,而UNIX使用正斜槓(/)。
File類定義了一個名爲分隔符的常量,它是系統相關的名稱分隔符。我們可以使用File.separator常量來獲取名稱分隔符。
System.out.println(System.getProperty("user.dir")+ File.separator + "notes.txt");
(3) 使用File對象,我們可以創建新文件,刪除現有文件,重命名文件,更改文件的權限等。
(4)File類中的isFile()和isDirectory()告訴File對象是否表示文件或目錄。
二、使用示例
(1) 我們可以使用File類的以下構造函數之一創建一個文件:
File(String pathname)
File(File parent, String child)
File(String parent, String child)
File(URI uri)
例如:
File dummyFile = new File("test.txt");
名爲test.txt的文件不必存在,以使用此語句創建File對象。
dummyFile對象表示抽象路徑名,它可能指向或可能不指向文件系統中的真實文件。
(2) 檢測文件的存在
我們可以使用File類的exists()方法檢查File對象的抽象路徑名是否存在。
boolean fileExists = dummyFile.exists();
import java.io.File;
public class FileDemo {
public static void main(String[] argv) {
//獲取源程序目錄地址
System.out.println(System.getProperty("user.dir")+ File.separator + "notes.txt");
// Create a File object
File dummyFile = new File("dummy.txt");
// Check for the file"s existence
boolean fileExists = dummyFile.exists();
if (fileExists) {
System.out.println("The dummy.txt file exists.");
} else {
System.out.println("The dummy.txt file does not exist.");
}
}
}
上面的代碼生成以下結果。
D:\Java\DemoSource\notes.txt
The dummy.txt file does not exist.
(3)檢測文件類型
isDirectory():Tests whether the file denoted by this abstract pathname is a directory.
isFile():Tests whether the file denoted by this abstract pathname is a normal file.
參考:
關於File對象的更多解釋,javadoc中講解的更爲全面,英文不理解的用Google翻譯(其他翻譯不準確),鏈接如下。
java 8: https://docs.oracle.com/javase/8/docs/api/
其他參考:
w3cschool: https://www.w3cschool.cn/java/java-io-file.html