Я кодировал этот фрагмент кода:
ReferenceComposition reference = this.restTemplate.execute(uriToCall, HttpMethod.GET, null, clientHttpResponse ->
this.extractReferenceFromResponse(
this.getReferenceHeader(clientHttpResponse),
this.getReferenceStream(clientHttpResponse.getBody())
)
);
Должен ли я закрыть InputStream
, возвращаемый clientHttpResponse.getBody()
после вызова this.extractReferenceFromResponse(..)
? getReferenceStream
используйте только InputStream
для создания временного файла.
getReferenceStream
is:
/**
* Creates a temporarily file.
* @param referenceStream response stream
* @return Temp created file
*/
private InputStream getReferenceStream(InputStream referenceStream) {
try {
File tmpReferenceFile = File.createTempFile("reference", "tmp");
OutputStream contentOutputStream = new FileOutputStream(tmpReferenceFile);
StreamUtils.copy(referenceStream, contentOutputStream);
contentOutputStream.close();
InputStream referenceContentStream = FileUtils.openInputStream(tmpReferenceFile);
return referenceContentStream;
} catch (IOException e) {
throw new ...
}
}
Обнаружена ли любая возможная утечка памяти?
Примечание Я знаю, что возвращаю открытую InputStream referenceContentStream
. Он закрывается позже, за фрагментом кода выше.