如果我以下列方式调用BufferedReader:
Integer.parseInt(new BufferedReader(new InputStreamReader(System.in)).readLine());
JVM是否知道在不使用时会自动关闭它?如果没有,我该如何关闭呢?
答案 0 :(得分:4)
如果您使用的是java 7或更高版本且代码位于try catch resource
块中,那么它是Auto closes
。
如果在以下版本中,您必须使用close()关闭。为此,你必须改变你目前的使用方式并获得参考。
答案 1 :(得分:2)
不要链接它们,声明并分配变量,然后在使用后关闭它。
InputStreamReader isReader;
BufferedReader bfReader;
try {
isReader = new InputStreamReader(System.in);
bfReader = new BufferedReader(isReader).readLine();
} catch (Exception e) {
// handle as per the requirement.
} finally {
bfReader.close();
}
如果您使用java 7,那么,如果您使用try子句定义,那么这些将自动关闭。查看here了解详情
try-with-resources语句是一个声明一个的try语句 或更多资源。资源是必须关闭的对象 程序完成后。尝试资源 语句确保每个资源在结束时关闭 声明。任何实现java.lang.AutoCloseable的对象,其中 包括实现java.io.Closeable的所有对象,可以用作 资源。