我正在尝试获取其名称包含特定字符的所有文件夹和子文件夹(目录而不是文件)。我使用的是自定义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("@");
}
}
我只得到根文件夹。
答案 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());
}