使用try-with-resources或在“finally”子句中关闭此“Stream”
我无法在这行代码/方法中应用 Sonarqube scan 建议的方法。
Sonarqube 说,“使用 try-with-resources 或在“finally”子句中关闭此“Stream”。
Files.list(voucherDirectory)
@Override
public String getLastModifiedFile() {
Path voucherDirectory = Paths.get(vouchiDir);
Optional<Path> lastFilePath = Optional.empty();
try {
lastFilePath = Files.list(voucherDirectory)
.filter(f -> !Files.isDirectory(f))
.max(Comparator.comparingLong(f -> f.toFile()
.lastModified()));
} catch (IOException e) {
log.error(e.getMessage(), e);
}
if (lastFilePath.isPresent()) {
return lastFilePath.get().getFileName().toString();
}
return "none";
}
任何帮助真的很感激!
回答
你需要这样做:
try (Stream<Path> list = Files.list(voucherDirectory)) {
lastFilePath = list
.filter(f -> !Files.isDirectory(f))
.max(Comparator.comparingLong(f -> f.toFile()
.lastModified()));
} catch (IOException e) {
log.error(e.getMessage(), e);
}
THE END
二维码