StreamWriter クラスで close メソッドを呼び出す理由はありますか? なぜ私はそれをしなければならないのですか?StreamWriter を閉じないと、何らかの未定義の動作が発生しますか?
3 に答える
java.io.OutputStreamWriterについて話していると仮定すると、はい、それ以上何も書きたくない場合は、finally ブロックで閉じる必要があります。これにより、基になる OutputStream を閉じることができます。基礎となる OutputStream が FileOutputStream の場合、ファイル記述子 (限られた OS リソース) を解放し、他の AP がファイルを読み取れるようにします。それが SocketOutputSTream の場合、ソケット入力ストリームからこれ以上何も期待してはならないことを反対側に通知します。
一般に、ストリームとリーダー/ライターは常に適切に閉じる必要があります。Java 7 を使用している場合は、新しい try-with-resources コンストラクトを使用して、自動的に行われることを確認してください。
オペレーティング システムはファイルを管理します。Java でファイルが閉じられていないと、システム全体のリソースが失われます。
ただし、Java 7では使用できます
try (OutputStreamWriter outWriter = new OuputStreamWriter(outStream, "UTF-8")) {
...
}
なしclose
。(出力ストリームとライターの実装Closeable
)。
ところで@PriestVallonは、あなたの質問をもう少し良く/魅力的に答えようとしていました。これまで見てきたように、それに対する「軽い」反応は誤解される可能性があります。
ストリームの書き込みと読み取りには、ソケット、ファイルハンドルなどの os リソースの使用が非常に頻繁に含まれます。ストリームに書き込みを行っている場合は、ストリームを閉じる必要もあります。ストリームの下で使用している実際のリソース)。ストリーム ライターを閉じると、リソースの排他的割り当てが解放されたり、一時データがストリームにフラッシュされたりすることがあります。ストリームの種類によっては、クローズが効果的でない場合もありますが、インターフェイスは、ストリームをクローズする必要があるすべてのケースを処理する必要があります。