Получить все папки, содержащие определенный символ - PullRequest
0 голосов
/ 17 ноября 2018

Я пытаюсь получить все папки и подпапки (каталоги, а не файлы), чтобы их имя содержало определенный символ. Я использую пользовательский 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 голосов
/ 17 ноября 2018

Попробуйте использовать API FileWalker.

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());
        }
...