获取所有包含特定字符的文件夹

时间:2018-11-17 20:30:36

标签: java apache-commons

我正在尝试获取其名称包含特定字符的所有文件夹和子文件夹(目录而不是文件)。我使用的是自定义IOFileFilter,但似乎被忽略了。

Collection<File> myFolders = FileUtils.listFilesAndDirs(new File(myFilesPath), new NotFileFilter(TrueFileFilter.INSTANCE), new CustomDirectoryFilter());

我的自定义过滤器是:

public class CustomDirectoryFilter extends AbstractFileFilter {
/**
 * Checks to see if the File should be accepted by this filter.
 *
 * @param file  the File to check
 * @return true if this file matches the test
 */

@Override   
public boolean accept(File file) {       
    return file.isDirectory() && file.getName().contains("@");       
}
}

我只得到根文件夹。

1 个答案:

答案 0 :(得分:1)

尝试使用Filewalker API。

Files.walk(Paths.get("/my/path/here")).filter(x->!Files.isRegularFile(x)).filter(x->x.toString().contains("@")).forEach(System.out::println);

使用common-io FileUtils

        List<File> ff = (List<File>) FileUtils.listFilesAndDirs(new File("/Users/barath/elasticsearch-6.2.4"), new NotFileFilter(TrueFileFilter.INSTANCE), DirectoryFileFilter.DIRECTORY);
        for(File f : ff){
        if(f.toString().contains("@"))
        System.out.println(f.toString());
        }