2

我试图了解如果 BufferedReader 从未关闭会有什么后果?我刚刚意识到许多静态代码都有一个 BufferedReader 并且它们永远不会用 try...catch..finally 关闭(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;
} 

如您所见,finally 中没有 br.close。这会带来问题吗?如果是这样,那是什么?对该方法的调用(以及其他来自此类性质的方法)是按顺序完成的——而不是由多个线程完成的。

4

1 回答 1

3

没问题,因为您在StringReader. 当离开的范围时,BufferedReder它将有资格进行垃圾收集。如果您没有关闭例如 a ,这将是一个问题,FileReader因为系统资源不会正确关闭,并且在程序结束之前文件上可能存在读锁。

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

于 2013-02-13T17:49:23.943 回答