>

소나 큐브에서 다음과 같은 오류가 발생합니다

자원을 사용하여 시도하거나 "최종"절에서이 "스트림"을 닫으십시오

List<Path> paths = find(Paths.get(nasProps.getUpstreamOutputDirectory() + File.separator + inputSource.concat("_").concat(contentGroup).concat("_").concat(parentId)),
                MAX_VALUE, (filePath, fileAttr) -> fileAttr.isRegularFile() && filePath.getFileName().toString().matches(".*\\." + extTxt))
                .collect(toList());
paths.stream().forEach(path -> textFileQueue.add(path));

나는 java8에 대해 많이 이해하지 못한다. 스트림을 닫을 수 있도록 도와 주시겠습니까?


  • 답변 # 1

    와이즈 비즈 가정  여기는 find 입니다 , 귀하에게 효과적인 것은

    Files.find
    
    

    여기서 sonarqube가 경고하는 이유는 링크 된 문서의API 노트에도 언급되어 있습니다 :

    와이즈 비즈 final Path startPath = Paths.get(nasProps.getUpstreamOutputDirectory() + File.separator + inputSource.concat("_").concat(contentGroup).concat("_").concat(parentId)); BiPredicate<Path, BasicFileAttributes> matcher = (filePath, fileAttr) -> fileAttr.isRegularFile() && filePath.getFileName().toString().matches(".*\\." + extTxt); try (Stream<Path> pathStream = Files.find(startPath, Integer.MAX_VALUE, matcher)) { pathStream.forEach(path -> textFileQueue.add(path)); } catch (IOException e) { e.printStackTrace(); // handle or add to method calling this block }

  • 이전 java - pagenotfound - dispatcherservlet에서 uri가 [/j_spring_security_check] 인 http 요청에 대한 맵핑이 없습니다
  • 다음 python - Chainer로 작성된 CNN 모델의 교육 코드