*(多字符)、?(單字符)// 1. 選擇目錄
JFileChooser chooser = new JFileChooser();
chooser.setFileSelectionMode(JFileChooser.DIRECTORIES_ONLY);
if (chooser.showOpenDialog(null) == JFileChooser.APPROVE_OPTION) {
File dir = chooser.getSelectedFile();
// 2. 遞歸收集文件
List allFiles = new ArrayList<>();
collectFiles(dir, allFiles);
// 3. 正則轉換:* → .* ? → .
String regex = pattern.replace(".", "\\.").replace("*", ".*").replace("?", ".");
Pattern p = Pattern.compile(regex);
// 4. 過濾顯示
for (File f : allFiles) {
if (p.matcher(f.getName()).matches() && extMatches(f)) {
model.addElement(f.getAbsolutePath());
}
}
}
已整理上傳至個人博客,包含完整 Swing 界面代碼與遞歸工具類: