在java

时间:2017-04-15 14:37:04

标签: java

我正在尝试编写一个代码,在所选文件夹中搜索包含文件名中包含特定单词的所有文档/图形扩展名的文件。我找不到任何类似的例子,我尝试了几种不同的方法,其中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++;
            }      
        }
    });
}

扩展搜索功能完善但由于某种原因,模式搜索仅适用于某些文件夹,而不适用于其他文件夹。我确信有更好的方法,但这个方法似乎最简单,(几乎)工作。我有什么想法可以让它完全发挥作用吗?

1 个答案:

答案 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}}

此代码将列出包含您的单词和特定扩展名的文件的路径。然而,它是一个流,所以无论你喜欢什么,你都可以使用它。