18. Java IO: File

weixin_33935777發表於2017-11-26

想要檢視此教程的目錄請點選:Java IO教程目錄貼地址


Java IO 的File類可以幫助你訪問底層的檔案系統,使用File類你可以:

  • 檢視檔案或目錄是否存在
  • 如果目錄不存在,可以建立
  • 讀取檔案的長度
  • 刪除或移動檔案
  • 刪除檔案
  • 檢視路徑指向的事檔案還是目錄
  • 讀取目錄下的檔案列表

這篇文章會告訴你更多的相關操作。
注意:File只允許你訪問檔案和檔案系統的後設資料,如果你需要讀寫檔案的內容,那麼你可以使用FileInputStream,FileOutputStream和RandomAccessFile等。
注意:如果你使用的是Java NIO,你就得使用java.nio.FileChannel。(你可以兩種方法都使用,但是你只是想用Java NIO)

例項化java.io.File

在你使用File類對檔案系統做一些操作之前,你必須要建立一個File例項。下面是如何建立一個例項:

File file = new File("c:\\data\\input-file.txt");

很簡單對麼?File類也有一些其他的構造方法供你使用。

檢視檔案是否存在

一旦例項化了File,你就可以檢查相應的檔案是否存在。如果檔案不存在File類的構造方法也不會執行失敗。要檢查檔案是否存在,呼叫exists()方法,下面是一個例子:

File file = new File("c:\\data\\input-file.txt");

boolean fileExists = file.exists();

如果目錄不存在,那麼建立一個

你可以用File類建立一個目錄,如果該目錄不存在。相關的方法為mkdir()和mkdirs()。

利用mkdir()建立一個資料夾,如果該資料夾不存在:

File file = new File("c:\\users\\jakobjenkov\\newdir");
boolean dirCreated = file.mkdir();

假如c:\users\jakobjenkov目錄已經存在,上面的程式碼會建立一個jakobjenkov的子目錄newdir。如果目錄已經建立好,mkdir()會返回true,如果沒有則返回false。

mkdirs()會建立所有所有引數中不存在的路徑:

File file = new File("c:\\users\\jakobjenkov\\newdir");

boolean dirCreated = file.mkdirs();

假如C盤已經存在,例子中的程式碼會建立所有的相關資料夾,如果建立好則返回true,反之則為not。

檔案長度

以位元組讀取檔案的長度,呼叫length()方法,下面是一個例子:

File file = new File("c:\\data\\input-file.txt");

long length = file.length();

重新命名或移動檔案

重新命名或移動一個檔案,呼叫renameTo()方法:

File file = new File("c:\\data\\input-file.txt");

boolean success = file.renameTo(new File("c:\\data\\new-file.txt"));

正如前面所簡要提到的,renameTo()方法也可以用來移動檔案到另一個目錄。給renameTo()方法傳遞的新目錄名稱不要與檔案所在的目錄一樣。

renameTo()方法返回布林型別的值,表示重新命名是否成功。導致重新命名或移動檔案失敗有很多原因,比如檔案已經被其他程式開啟,沒有足夠的許可權等等。

刪除檔案

刪除檔案需要呼叫delete() 方法:

File file = new File("c:\\data\\input-file.txt");

boolean success = file.delete();

此方法也會返回一個布林值表示檔案是否刪除成功。刪除檔案失敗的原因可能有檔案已經被其他程式開啟,沒有足夠的許可權等等。

確定指向的路徑是檔案還是目錄

File例項可以指向檔案或目錄。你可以檢查指向的具體是什麼,這裡呼叫isDirectory()方法。如果方法返回true那麼說明指向的是目錄,反之則為檔案:

File file = new File("c:\\data");

boolean isDirectory = file.isDirectory();

讀取目錄下的檔案列表

你可以通過呼叫list()方法或listFiles() 方法獲得一個目錄下的檔案列表,list()方法返回一個String陣列,代表指向的檔案或目錄的絕對路徑。listFiles() 方法返回一個File陣列,代表著相應檔案的File物件:

File file = new File("c:\\data");

String[] fileNames = file.list();

File[]   files = file.listFiles();

相關文章