在从服务器获得响应后(通过发送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)就足够了?
发布于 2018-05-31 19:19:37
这是一个很好的实践。当使用允许“清理”的资源时,就去做吧。简单的方法是使用try-with-resources:
try (InputStreamReader isr = new InputStreamReader(entity.getContent(), "UTF-8");
Reader reader = new BufferedReader()) {
content = IOUtils.toString(reader);
EntityUtils.consume(entity);
} catch (IOException e) {
...
}含义: Java语言已经为您提供了自动执行此操作的方法。
发布于 2018-05-31 19:21:02
您可以使用try-with-resources-statement:
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
}
}
}https://stackoverflow.com/questions/50623077
复制相似问题