어떻게 자바에서 여러 개의 파일 확장자 거리 '여러 디렉토리에?

Cruxial :

여기에 완벽하게 작동 내 실제 코드는 다음과 같습니다
문자열 sHomeDir 어디 스캔 시작하는 내 유일한 폴더입니다
문자열 sExt가 검색 할 수있는 유일한 확장

try (Stream<Path> walk = Files.walk(Paths.get(sHomeDir)))
{
    List<String> result = walk.map(x -> x.toString())
        .filter(f -> f.endsWith(sExt)).collect(Collectors.toList());
    ...
} catch (IOException e) {
   e.printStackTrace();
}

이 순서로 사용, 그 재 작성 할 수 있습니다 :
- 여러 폴더 (하위 트리에) 스캔
- 검색 할 여러 개의 파일 확장자를

감사합니다 !

Mureinik :

여러 디렉토리를 처리하기 위해, 당신이 그들을 스트리밍 및 경로의 단일 스트림을 flatmap 수 있습니다. 여러 확장을 처리하기 위해, 당신은 단지 그들 모두에 대해 파일을 확인해야합니다 :

public static List<String> multiWalk
    (Collection<String> directories, Collection<String> extensions) {

    return directories.stream()
                      .flatMap(d -> {
                          try {
                              return Files.walk(Paths.get(d));
                          } catch (IOException e) {
                              return Stream.empty();
                          }
                      })
                      .map(Object::toString)
                      .filter(f -> extensions.stream().anyMatch(f::endsWith))
                      .collect(Collectors.toList());
}

추천

출처http://43.154.161.224:23101/article/api/json?id=296933&siteId=1