1. 程式人生 > >45、檔案過濾器FilenameFilter

45、檔案過濾器FilenameFilter

檔案過濾器FilenameFilter

JDK中提供了一個FilenameFilter的介面用來實現檔案過濾功能,可以使用這個檔案過濾器來實現上一節中的問題。

File類中有一個帶引數的list方法

public String[] list(FilenameFilter filter)

上面的方法中接收FilenameFilter物件,FilenameFilter是一個介面,裡面有一個方法

boolean accept(File dir, String name);

要想使用檔案過濾器的話需要重寫這個accept方法,在方法裡面編寫過濾條件,這裡接收兩個引數,dir就是當前呼叫這個list方法的File物件,name是這個方法的檔名。

下面是使用FilenameFilter來實現統計專案根目錄下以.txt結尾的檔案數量,並將檔名打印出來。

package com.sutaoyu.file;

import java.io.File;
import java.io.FilenameFilter;

public class test_5 {
    public static void main(String[] args) {
        File file = new File("D:\\java\\Eclipse\\chapter-08\\files\\");
        String[] nameArray 
= file.list(new FilenameFilter() { public boolean accept(File dir,String name) { //獲取根目錄下每個檔案的File物件 File file1 = new File(dir,name); //編寫篩選條件 return file1.isFile() && file1.getName().endsWith(".txt"); } }); System.out.println(
"以.txt結尾的檔案個數是" + nameArray.length + "個"); for(String name : nameArray){ System.out.println(name); } } }