Сонарное сканирование говорит о закрытии потока, но нет потока для закрытия - PullRequest
1 голос
/ 12 апреля 2020

У меня есть этот код:

String requestedFile = Paths.get(prefix, name).toString();
// Find all matching files
List<String> foundFiles;
try {
    foundFiles = Files.walk(Paths.get(PACKAGE_BASE), 1).filter(subdirectory -> Paths.get(subdirectory.toString(), requestedFile).toFile().exists()).map(String::valueOf).collect(Collectors.toList());

    // Maybe we didn't find anything?
    if (foundFiles.isEmpty()) return null;

    String matchingFile = Paths.get(foundFiles.get(0), requestedFile).toString();
    return matchingFile;
} catch (IOException e) {
    return null;
}

Мой сонарный сканер говорит:

Use try-with-resources or close this "Stream" in a "finally" clause

Это происходит в вызове Files.walk, но я не писал этот код, и Я не знаю, как правильно разбить это, чтобы попробовать с ресурсами или заставить поток закрыться в конце концов.

Любые идеи?

1 Ответ

4 голосов
/ 12 апреля 2020

Stream<Path> является закрываемым:

    List<String> foundFiles;
    try (Stream<Path> pathStream = Files.walk(Paths.get(PACKAGE_BASE), 1)) {
        foundFiles = pathStream
                .filter(subdirectory -> subdirectory.resolve(requestedFile).toFile().exists())
                .map(String::valueOf)
                .collect(Collectors.toList());
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...