我正在尝试编写一个代码,在所选文件夹中搜索包含文件名中包含特定单词的所有文档/图形扩展名的文件。我找不到任何类似的例子,我尝试了几种不同的方法,其中1是最接近的:
private void startButtonActionPerformed(java.awt.event.ActionEvent evt) {
File startingPath = dirChooser.getCurrentDirectory();
String[] extensions = new String[] {
"txt", "doc", "docx", "jpg", "jpeg", "pdf", "odt", "png", "bmp"};
// there are about 20 different patterns like the ones below
Pattern p = Pattern.compile(".*password.*|.*user.*|.*profile.*");
List<File> files = (List<File>) FileUtils.listFiles(
startingPath, extensions, true);
files.forEach((file) -> {
if (file.isFile()){
Matcher m = p.matcher(file.toString().toLowerCase());
if (m.matches()) {
filesArea.append(file.toString() + "\n");
noOfFiles++;
}
}
});
}
扩展搜索功能完善但由于某种原因,模式搜索仅适用于某些文件夹,而不适用于其他文件夹。我确信有更好的方法,但这个方法似乎最简单,(几乎)工作。我有什么想法可以让它完全发挥作用吗?
答案 0 :(得分:0)
怎么样:
public boolean accept(Path e)
{
FileNameExtensionFilter filter = new FileNameExtensionFilter("Extensions", "txt", "doc", "docx", "jpg", "jpeg", "pdf", "odt", "png", "bmp");
return filter.accept(e.toFile());
}
接受函数如下:
{{1}}
此代码将列出包含您的单词和特定扩展名的文件的路径。然而,它是一个流,所以无论你喜欢什么,你都可以使用它。