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離れると、ガベージ コレクションの対象になります。たとえばFileReader、システム リソースが適切に閉じられず、プログラムが終了するまでファイルに読み取りロックがかかる可能性があるため、閉じないと問題が発生します。

バッファリングのためにデータがファイルに書き込まれない可能性があるため、書き込み時に問題が発生する可能性があります。

于 2013-02-13T17:49:23.943 に答える