>Java >java지도 시간 >Java 8의 `Files.walk()` 및 `Files.find()`는 어떻게 재귀 파일 목록을 간소화할 수 있습니까?

Java 8의 `Files.walk()` 및 `Files.find()`는 어떻게 재귀 파일 목록을 간소화할 수 있습니까?

Susan Sarandon
Susan Sarandon원래의
2024-12-19 09:02:11125검색

How Can Java 8's `Files.walk()` and `Files.find()` Streamline Recursive File Listing?

Java의 재귀 파일 목록: 프레임워크 개선으로 간소화됨

배경:

반복 디렉토리 구조의 모든 파일은 Java 프로그래밍에서 공통적으로 필요합니다. 그러나 많은 구현은 복잡하고 프레임워크 지원이 부족한 경향이 있습니다.

프레임워크 솔루션(Java 8): Files.walk() 및 Files.find()

Java 8에서는 파일을 위한 우아한 메커니즘을 도입했습니다. 반복:

  • Files.walk(): 디렉토리를 재귀적으로 탐색하여 개별 파일을 나타내는 Path 객체 스트림을 제공합니다.
  • Files.find (): BiPredicate 필터를 허용하여 파일을 기반으로 보다 효율적인 탐색을 가능하게 합니다. 속성.

코드 예:

Files.walk()를 활용하면 다음과 같이 지정된 디렉터리 아래의 모든 일반 파일을 반복적으로 나열할 수 있습니다.

try (Stream<Path> stream = Files.walk(Paths.get(path))) {
    stream.filter(Files::isRegularFile)
          .forEach(System.out::println);
}

조건부 필터링 (선택 사항):

파일 속성 필터링이 필요한 경우 Files.find()는 향상된 효율성을 제공합니다.

Files.find(Paths.get(path),
           Integer.MAX_VALUE,
           (filePath, fileAttr) -> fileAttr.isRegularFile())
        .forEach(System.out::println);

성능 고려 사항:

Files.walk()와 Files.find()는 일반적으로 실제로 동일하게 수행됩니다. 그러나 속성을 기반으로 필터링할 때는 Files.find()가 약간 더 효율적일 수 있습니다.

추가 참고 사항:

  • Files.walk()는 스트림을 제공합니다. 제한, 그룹화 또는 매핑과 같은 추가 처리를 위한 기반 유연성.
  • Files.find()는 전용 필터를 제공합니다. 복잡한 속성 검사를 단순화할 수 있는 인터페이스입니다.

위 내용은 Java 8의 `Files.walk()` 및 `Files.find()`는 어떻게 재귀 파일 목록을 간소화할 수 있습니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.