在解析JSON的一个非常常见的操作中,我们做了类似这样的事情
StringBuilder sb = new StringBuilder();
BufferedReader br = null;
try {
URL requestUrl = new URL(url);
URLConnection con = requestUrl.openConnection();
br = new BufferedReader(new InputStreamReader(con.getInputStream()));
int cp;
try {
while ((cp = br.read()) != -1) {
sb.append((char) cp);
}
}
catch(Exception e){
}
}catch (MalformedURLException e){
e.printStackTrace();
} catch (IOException e) {
e.printStackTrace();
}finally {
if(br != null){
try{
br.close();
}catch (IOException e){
e.printStackTrace();
}
}
}
这里我只关闭缓冲的阅读器。 这样就够了,或者我也应该关闭输入流?
答案 0 :(得分:1)
关闭BufferedReader
就足够了。
如果您查看BufferedReader.close()
的来源,您会看到它关闭了基础读者:
public void close() throws IOException {
synchronized (lock) {
if (in == null)
return;
try {
in.close();
} finally {
in = null;
cb = null;
}
}
}
来自Reader.close()
的javadocs:
关闭流并释放与其关联的所有系统资源。