我试图了解如果BufferedReader从未关闭会产生什么后果?我刚刚意识到,许多静态代码都有一个BufferedReader,它们从来没有用try。。。接住最后(br.关闭)
大部分代码看起来是这样的:
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;
}
正如你所看到的,finally中没有br.close。这会带来问题吗?如果是,那是什么?对这个方法(以及其他来自这种性质的方法)的调用是按顺序执行的,而不是由多个线程执行。
没有问题,因为您在StringReader
上使用了它。当BufferedReder
的作用域保留时,它将有资格进行垃圾收集。如果您不关闭(例如FileReader
),这将是一个问题,因为系统资源不会正确关闭,并且在程序结束之前,文件可能会被读取锁定。
写入时可能会出现问题,因为由于缓冲,数据可能永远不会写入文件。