java - 关闭 StreamReader

标签 java http streamreader

从服务器获得响应(通过发送 http 请求)后,我尝试按如下方式获取内容:

HttpEntity entity = response.getEntity();

    if (entity == null) {
        ...
    }

    String content;
    try {
        Reader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
        content = IOUtils.toString(reader);
        reader.close();
        EntityUtils.consume(entity);
    } catch (IOException e) {
        ...
    }

是否有必要关闭阅读器(reader.close())?或者 EntityUtils.consume(entity) 就足够了?

最佳答案

您可以使用try-with-resources-语句:

try(Reader reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"))) {
    content = IOUtils.toString(reader);
    EntityUtils.consume(entity);
} catch (IOException e) {
    ...
}

这已经为您关闭了阅读器。

对于 Java 6,您应该使用以下内容:

Reader reader = null;
try {
    reader = new BufferedReader(new InputStreamReader(entity.getContent(), "UTF-8"));
    content = IOUtils.toString(reader);
    EntityUtils.consume(entity);
} catch (IOException e) {
    ...
} finally {
    if(reader != null){
        try {
            reader.close();
        } catch(IOException e){
            // can not be closed
        }
    }
}

关于java - 关闭 StreamReader,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50623077/

相关文章:

web-services - 哪个 HTTP 动词适合设置 bool 值?

python - 由 Web 应用程序而不是服务器协调的 HTTP 身份验证

c# - 读取文本文件跳过一堆行然后继续其他行

java - 由于数据类型,While 循环在计算之前退出

java - 从字符串中提取单词的正则表达式

javascript - NodeJS 未加载外部 javascript

c# - 在 C# 中读取和写入非常大的文本文件

java - 无法呈现请求 [/countries] 的错误页面,因为响应已提交。因此,响应可能有错误的状态代码

java - Mysql DB连接JDBC卡住程序

c# - 在 C# 中读取第一百万行