关闭流读取器



从服务器获得响应(通过发送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
}
}
}

这是很好的做法。当使用允许"清理"的资源时,只需去做。 简单的方法是使用试用资源:

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

意思是:Java语言已经为你提供了自动发生的方法。

相关内容

  • 没有找到相关文章

最新更新