BufferedReader永远不会关闭。有什么后果?

时间:2013-02-13 17:38:05

标签: java bufferedreader try-catch-finally

我试图了解如果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。这会出现问题吗?如果是这样的话是什么?对这种方法的调用(以及其他来自这种性质的方法)是按顺序完成的 - 不是由多个线程完成的。

1 个答案:

答案 0 :(得分:3)

没问题,因为您在StringReader上使用它。当剩下BufferedReder的范围时,它将有资格进行垃圾收集。 如果您没有关闭例如FileReader,那将是一个问题,因为系统资源无法正常关闭,并且在程序结束之前可能会对文件进行读锁定。

写入时可能会出现问题,因为缓冲可能永远不会将数据写入文件。