検索

ホームページ  >  に質問  >  本文

java - inputStream关闭了,还有必要关闭InputStreamReader和BufferedReader吗?

PHP中文网PHP中文网2807日前1204

全員に返信(3)返信します

  • PHP中文网

    PHP中文网2017-04-18 09:32:18

    一番外側の close() を直接呼び出すだけです


    更新:

    http://docs.oracle.com/javase/8/docs/api/java/io/BufferedReader.html#close--

    ストリームを閉じ、それに関連付けられているシステム リソースを解放します

    http://docs.oracle.com/javase/8/docs/api/java/io/InputStreamReader.html#close--

    ストリームを閉じ、それに関連付けられているシステム リソースを解放します

    これはチェーンです。最も外側のチェーンを閉じ、最も外側のチェーンが内側のチェーンを閉じ、内側のチェーンが内側のチェーンを閉じます。


    もちろん、シャットダウンが失敗する可能性があると主張する場合は、最終的には実行する必要があります。

    返事
    0
  • 阿神

    阿神2017-04-18 09:32:18

    質問が次のような場合: BufferedReader が閉じられていますが、InputStreamReader と InputStream を閉じる必要がありますか? なら、この問題は正常です...

    Java の io パッケージのストリームとリーダーは両方ともデコレータ パターンを使用します。最も外側のデコレータの close メソッドを呼び出すだけで、デコレータが装飾するストリームまたはリーダーも閉じられます。

    これが機能しない場合は、BufferedReader のソース コードを開いて、close メソッドを確認してください。

    で装飾されているリーダーが閉じられていることがわかります。

    どんなに難しくても、あなたの疑問を解決できるかもしれない次の記事をお勧めします。「Java IO: ストリームとそのデコレータ パターンの適用」

    返事
    0
  • 怪我咯

    怪我咯2017-04-18 09:32:18

    すべてを 1 つずつ順番に、できれば最後に閉じる必要があります

    リーリー

    最初に作成された最後のレベル、最後に作成された最初のレベル

    返事
    0
  • キャンセル返事