首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
您现在的位置: 程式碼之家 >> 編程語言 >  >> Java 程式設計 >> Java 相關知識

Java FileFilter 實現文件擴展名過濾搜索

     編輯:Java 相關知識

FileFilter(JDK 1.2+)比 FilenameFilter 更強大:它接收 File 對象,可直接判斷是文件還是目錄,避免「無法區分文件夾與同名文件」的尷尬。本文給出按擴展名過濾的完整實現與調用示例。

核心差異

// FileFilter
boolean accept(File file);

// FilenameFilter
boolean accept(File directory, String name);

ExtensionFileFilter 實現

package com.generationjava.io.find;
import java.io.File;
import java.io.FileFilter;

public class ExtensionFileFilter implements FileFilter {
    private String extension;

    public ExtensionFileFilter(String extension) {
        this.extension = extension;
    }

    public boolean accept(File file) {
        if (file.isDirectory()) return false; // 僅文件
        String name = file.getName();
        int idx = name.lastIndexOf('.');
        if (idx == -1) return false;          // 無擴展名
        if (idx == name.length() - 1) return false; // 以點結尾
        return this.extension.equals(name.substring(idx + 1));
    }
}

調用示例

String dir = "C:/config";
File file = new File(dir);
File[] files = file.listFiles(new ExtensionFileFilter("cfg"));
// files 即為 C:/config 下所有 .cfg 文件

補充說明

  • FileFilter 源自 javax.swing.filechooser.FileFilter(抽象類),Swing 的 JFileChooser 同樣使用該機制。
  • 可擴展支持多擴展名、正則表達式、文件大小/修改時間等復合條件。
  • Java 7+ 推薦使用 Files.newDirectoryStream(Path, Glob) 或 Files.walkFileTree 獲得更豐富的遍歷控制。
  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved