Java BufferedReader从不关闭。后果是什么?
我试图理解如果BufferedReader从未关闭会产生什么后果? 我刚刚意识到,许多静态代码都有一个BufferedReader,它们永远不会用try…catch…finally(br.close)关闭 大多数代码如下所示:Java BufferedReader从不关闭。后果是什么?,java,bufferedreader,try-catch-finally,Java,Bufferedreader,Try Catch Finally,我试图理解如果BufferedReader从未关闭会产生什么后果? 我刚刚意识到,许多静态代码都有一个BufferedReader,它们永远不会用try…catch…finally(br.close)关闭 大多数代码如下所示: public static boolean isProcessX24Success(String data) throws Exception { BufferedReader br = new BufferedReader(new StringReader
public static boolean isProcessX24Success(String data) throws Exception
{
BufferedReader br = new BufferedReader(new StringReader(data));
String line = "";
String result = "";
while ((line = br.readLine()) != null)
{
if (line.contains("SUCCESS X24"))
return true;
}
return false;
}
正如你所看到的,在最后一个阶段没有br.close。这会带来问题吗?如果是,是什么?对该方法的调用(以及其他类似性质的调用)是按顺序完成的,而不是由多个线程执行。没有问题,因为您在
StringReader
上使用它。当BufferedReder
的作用域离开时,它将有资格进行垃圾收集。
如果未关闭例如文件读取器
,则会出现问题,因为系统资源未正确关闭,并且在程序结束之前,文件上可能存在读取锁定
写入时可能会出现问题,因为由于缓冲,数据可能永远不会写入文件