xia*_*alu 2 java inputstreamreader
我们都知道,关闭我们在代码末尾定义的所有 StreamReader 是一个好习惯。
现在我们可以看到两个 Reader 的定义如下。BufferedReader 和InputStreamReader。BufferedReader 已关闭,但我们无法关闭InputStreamReader。
JAVA代码:
BufferedReader in = new BufferedReader(new InputStreamReader(
connection.getInputStream()));
if (in != null) {
in.close();
}
Run Code Online (Sandbox Code Playgroud)
问题来了,括号里的InputStreamReader是否应该关闭呢?这样的代码会不会给程序带来一些问题呢?请告诉我,谢谢~
关闭您使用的任何资源非常重要。
in.close将关闭 BufferedReader,进而关闭它本身使用的资源,即。输入流读取器。
因此,假设在调用之前没有发生异常,您所做的将关闭它们in.close。
为了确保无论什么用途它都会关闭,try-with-resources一旦您的块完成或发生异常时,它会自动为您关闭它。
你可以这样做:
try(BufferedReader in = new BufferedReader(new InputStreamReader(
connection.getInputStream()))){/*code here*/}
Run Code Online (Sandbox Code Playgroud)
try()保证关闭所有资源。