1. 程式人生 > 其它 >Java基礎09-IO流-File類

Java基礎09-IO流-File類

簡介

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類的基本方法

  1. dir.delete(); 刪除一個資料夾時,資料夾不為空不能刪除
  2. file.createNewFile();新建一個檔案時,如果檔案存在,則不進行建立
  3. file.isFile();檔案不存在時也返回false,所以在判斷之前需要判斷檔案是否存在
  4. file.renameTO(file2);可以移動檔案並重命名
  5. file.list();file必須是目錄物件,如果是一個檔案物件會空指標異常
  6. file.list(FileNameFilter filter);實現FileName Filter類重寫accep方法,並例項化類,進行檔名過濾。本質過濾器獲取所有檔名,進行判斷,符合規則,則存入某個容器
  7. 圖解:

列印一個目錄中的所有檔案(包含子目錄中的檔案)

  1. 思路
    1. file.listFiles();獲取所有的檔案物件
    2. 判斷是檔案還是目錄
    3. 如果是目錄,遍歷目錄進行判斷(遞迴),如果是檔案則列印輸出
  2. 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();
    	}
    }
    

刪除一個有內容的目錄

  1. 需要進行深度遍歷
  2. 刪除所有檔案
  3. 刪除目錄