【问题标题】:BufferedReader is never closed. What are the ramifications?BufferedReader 永远不会关闭。有什么后果?
【发布时间】:2013-02-13 17:38:05
【问题描述】:

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

【问题讨论】:

    标签: java bufferedreader try-catch-finally


    【解决方案1】:

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

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

    【讨论】:

      猜你喜欢
      • 2011-05-13
      • 1970-01-01
      • 1970-01-01
      • 2017-07-22
      • 2015-04-21
      • 2011-06-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多