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

Java 正則表達式實現文件條件查詢實戰解析

     編輯:Java 相關知識

需求背景

實際開發中常需根據正則條件查詢指定目錄下的文件。本文通過完整代碼示例,演示如何利用 Java 正則 API(Pattern、Matcher)結合 FileFilter 實現靈活的文件名匹配與遞歸收集。

核心實現代碼

// 用於緩存文件列表
private ArrayList files = new ArrayList();
// 文件路徑
private String _path;
// 未編譯的正則公式
private String _regexp;

class MyFileFilter implements FileFilter {
    /** 匹配文件名稱 */
    public boolean accept(File file) {
        try {
            Pattern pattern = Pattern.compile(_regexp);
            Matcher match = pattern.matcher(file.getName());
            return match.matches();
        } catch (Exception e) {
            return true; // 正則出錯時默認通過
        }
    }
}

/** 解析輸入流 */
FilesAnalyze(String path, String regexp) {
    getFileName(path, regexp);
}

// Java正則表達式實現條件查詢
private void getFileName(String path, String regexp) {
    _path = path;
    _regexp = regexp;
    File directory = new File(_path);
    File[] filesFile = directory.listFiles(new MyFileFilter());
    if (filesFile == null) return;
    for (int j = 0; j < filesFile.length; j++) {
        files.add(filesFile[j]);
    }
}

/** 顯示輸出信息 */
public void print(PrintStream out) {
    Iterator elements = files.iterator();
    while (elements.hasNext()) {
        File file = (File) elements.next();
        out.println(file.getPath());
    }
}

public static void output(String path, String regexp) {
    FilesAnalyze fileGroup1 = new FilesAnalyze(path, regexp);
    fileGroup1.print(System.out);
}

public static void main(String[] args) {
    output("C:\\", "[A-z|.]*");
}

關鍵點解析

  • FileFilter 介面:accept() 方法中編譯正則並匹配文件名,返回 true 表示保留。
  • 異常容錯:正則編譯/匹配拋異常時返回 true,避免單個錯誤導致整個查詢失敗。
  • 靈活擴展:只需修改傳入的正則字符串即可實現不同查詢條件,無需改動邏輯代碼。

總結

Java 正則表達式在字符處理領域極其強大,「只要是字符處理,就沒有正則做不到的事」。掌握 Pattern、Matcher 與 FileFilter 的組合,能輕鬆應對各類文件條件查詢場景。

  1. 上一篇文章:
  2. 下一篇文章:
Copyright © 程式碼之家 All Rights Reserved