Java —— 檔案類(File 類)

Alex_McAvoy發表於2018-10-23

【概述】

File 類是一個與流無關的類,存放在 java.io 包下,File 類的物件可以獲取檔案、檔案目錄、檔案長度等資訊。

建立一個 File 類物件時,若其代表的檔案不存在,系統不會自動建立,必須要呼叫 createNewFile() 方法來建立。

File 的方法僅涉及到檔案的建立、刪除、重新命名等等,無法涉及到檔案內容,對檔案內容的修改,必須使用 IO 流來處理,因此,File 類的物件常用於做 IO 流具體類的構造器的形參。

【路徑】

路徑是在建立 File 類物件以及流使用時不可迴避的問題,要注意的有兩方面:反斜槓與斜槓的書寫、絕對路徑與相對路徑

1.反斜槓與斜槓

由於反斜槓 " \ " 無法直接輸出,因此在寫路徑時,要用兩個反斜槓(前一個用於轉義) " \\ ",例如:" D:\\xxx\\xx.txt "

如若覺得寫兩個反斜槓過於繁瑣,則也可在寫路徑時用一個斜槓 " / " 代替,例如:" D:/xxx/xx.txt "

2.絕對路徑與相對路徑

絕對路徑:包括碟符在內的完整的檔案路徑

相對路徑:在當前檔案目錄下的檔案的路徑

例如:當前包的路徑是:" D:\\Test ",其中有一文字檔案 " hello.txt " 

則:絕對路徑是:" D:\\Test\\hello.txt ",相對路徑是:" hello.txt "

【構造器】

1.File(String pathname) 方法

File(String pathname) 構造方法通過指定的檔案路徑字串來建立一個新的 File 例項物件

pathname:檔案絕對路徑字串

File file = new File("D:\\Test\\Example.txt");

2.File(String path,String filename) 方法

File(String path,String filename) 構造方法根據指定的父路徑字串和子路徑字串建立 File 類的例項物件

path:父路徑字串

filename:子路徑的檔名字串

File file = new File("D:\\Test","Example.txt");

3.File(File file,String filename) 方法

File(File file,String filename) 構造方法根據指定的 File 類的父路徑和字串型別的子路徑建立 File 類的例項物件

file:父路徑的物件

filename:子路徑檔名字串

File file1 = new File("D:\\Test");
File file2 =new File(file1,"example.txt");

【常用方法】

1.詢問檔案

getName() 獲取檔名
getParent() 獲取檔案父路徑字串
getPath() 獲取檔案相對路徑字串
getAbsolutePath() 獲取檔案絕對路徑字串

2.檔案檢測

exists() 判斷檔案或資料夾是否存在
canRead)( 判斷檔案是否可讀
canWrite() 判斷檔案是否可寫
isFile() 判斷檔案是否是一個檔案而非目錄
isDirectory() 判斷檔案是否是資料夾型別
isHidden() 判斷是不是隱藏檔案
isAbsolute() 判斷是不是絕對路徑

3.檔案及目錄操作

createNewFile() 建立一個新檔案
delete() 刪除檔案或資料夾,刪除成功返回 true
renameTo(File newName) 將當前檔名重新命名為指定檔名 newName,要求當前檔案必須存在,指定檔案毋需存在
mkdir() 建立目錄(只有上層目錄存在的情況下),建立成功返回 true
mkdirs() 建立路徑中包含的所有父目錄和子目錄(即上層目錄不存在一併建立),若所有父目錄和子目錄都成功建立,則返回 true

4.獲取常規資訊

length() 獲取檔案長度
lastModified() 獲取檔案最後修改日期
list() 以 String 型別的形式讀取資料夾中的檔名
listFiles() 以 File 型別的形式讀取資料夾中的檔案

對於 list() 方法與 listFiles() 方法以下兩種用法等價:

File file=new File("D:\\Test");

String[] str=file.list();
for(int i=0;i<str.length;i++)
    System.out.println(str[i]);

File[] files=file.listFiles();
for(int i=0;i<files.length;i++)
    System.out.println(files[i].getName());

 

相關文章