Java基礎09-IO流-File類
阿新 • • 發佈:2021-10-07
簡介
1. 用來將檔案或者資料夾封裝成物件
2. 方便對檔案與資料夾的屬性資訊進行操作
3. File物件可以作為引數傳遞給流的建構函式
4. 瞭解File類中的常用方法
File建構函式
package com.gaopeng.file; import java.io.File; public class Demo01 { public static void main(String[] args) { //可以將一個已存在,或為存在的檔案或者資料夾封裝成一個File物件 File file = new File("a.txt"); //路徑與檔案分開傳遞 new File("C:\\","a.txt"); //傳遞資料夾 File file1 = new File("C:\\"); //檔案物件與檔案傳遞引數 new File(file1,"a.txt"); //獲取系統路徑分隔符 File file2 = new File("C:" + File.separator + "a.txt"); System.out.println(file2); } }
File類的基本方法
- dir.delete(); 刪除一個資料夾時,資料夾不為空不能刪除
- file.createNewFile();新建一個檔案時,如果檔案存在,則不進行建立
- file.isFile();檔案不存在時也返回false,所以在判斷之前需要判斷檔案是否存在
- file.renameTO(file2);可以移動檔案並重命名
- file.list();file必須是目錄物件,如果是一個檔案物件會空指標異常
- file.list(FileNameFilter filter);實現FileName Filter類重寫accep方法,並例項化類,進行檔名過濾。本質過濾器獲取所有檔名,進行判斷,符合規則,則存入某個容器
- 圖解:
列印一個目錄中的所有檔案(包含子目錄中的檔案)
- 思路
- file.listFiles();獲取所有的檔案物件
- 判斷是檔案還是目錄
- 如果是目錄,遍歷目錄進行判斷(遞迴),如果是檔案則列印輸出
- Demo
package com.gaopeng.file; import java.io.File; public class Demo04 { public static void main(String[] args) { File file = new File("D:\\"); int level=0; listAll(file,level); } private static void listAll(File file, int level) { File[] files = file.listFiles(); level++; for (File file1 : files) { if (!file1.isHidden()) { if(file1.isFile()){ System.out.println(getSpace(level)+file1.getName()); } else if(file1.isDirectory()){ listAll(file1, level); } } } } private static String getSpace(int level) { StringBuilder str = new StringBuilder(); str.append("| "); for (int i = 0; i < level; i++) { str.append("|--"); } return str.toString(); } }
刪除一個有內容的目錄
- 需要進行深度遍歷
- 刪除所有檔案
- 刪除目錄