Java 缓冲读取器关闭后,输入流是否也应关闭?
在解析JSON的一个非常常见的操作中,我们执行如下操作Java 缓冲读取器关闭后,输入流是否也应关闭?,java,iostream,Java,Iostream,在解析JSON的一个非常常见的操作中,我们执行如下操作 StringBuilder sb = new StringBuilder(); BufferedReader br = null; try { URL requestUrl = new URL(url); URLConnection con = requestUrl.openConnection(); br = new BufferedReader(ne
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();
}
}
}
这里我只是关闭缓冲读取器。
这足够了吗,或者我也应该关闭输入流?关闭
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:
关闭流并释放与之关联的所有系统资源
答案如下: