我试图了解如果BufferedReader永远不会关闭会有什么后果? 我刚刚意识到许多静态代码都有一个BufferedReader,它们永远不会被try ... catch ...最终关闭(br.close)
大部分代码如下所示:
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。这会出现问题吗?如果是这样的话是什么?对这种方法的调用(以及其他来自这种性质的方法)是按顺序完成的 - 不是由多个线程完成的。
答案 0 :(得分:3)
没问题,因为您在StringReader
上使用它。当剩下BufferedReder
的范围时,它将有资格进行垃圾收集。
如果您没有关闭例如FileReader
,那将是一个问题,因为系统资源无法正常关闭,并且在程序结束之前可能会对文件进行读锁定。
写入时可能会出现问题,因为缓冲可能永远不会将数据写入文件。