如果我在Java中使用BufferedReader进行流传输,是否有资源泄漏

问题描述 投票:2回答:1

这几乎是我的代码。 (无readclose呼叫)。我是否需要关闭InputStream或BufferedReader?这里是否有任何代码气味/资源泄漏?

InputStream stream = response.getEntity().getContent();
String response = new BufferedReader(new InputStreamReader(stream)).lines()
                .collect(Collectors.joining("\n"));

编辑

根据答案,这是正确的

InputStream stream = response.getEntity().getContent();
String response;
try (BufferedReader br = new BufferedReader(new InputStreamReader(responseStream))) {
                    response = br.lines().collect(Collectors.joining("\n"));
                }
java stream inputstream bufferedreader
1个回答
1
投票

否,在这种情况下,在执行流管线操作时,流不会自动关闭,实际上,正如[C​​0]中所述,

简而言之,the documentation(C0)不负责处理已作为资源处理传递的流(Stream)。因此,在这种情况下,确保自动关闭流的首选方法是使用

try-with-resource

方法,如下所示:
© www.soinside.com 2019 - 2024. All rights reserved.