java - ローカルファイルのjava.io.InputStreamはいつ閉じられたときに例外をスローしますか?

java file-io exception-handling

こんにちは。 close()java.io.OutputStreamとすると、ハードディスクエラーが発生したときにit may throw an IOExceptionが発生することを認識しています。

java.io.InputStreamについては、Javamexは次のように述べています。



ネットワークソケットの通常のクローズには、実際には、接続を介して送信されるクローズ要求(TCP / IP FINパケット)が含まれ、相手側がこのクローズ要求を確認するのを待機しています。 (実際、接続のもう一方の端は、次にクローズ要求を送信します。これは、クローズ端が確認します。)したがって、ソケット入力ストリームの場合、実際のクローズ操作には、接続を介してトラフィックを送信することが含まれます。エラーで失敗します。



現在、ローカルファイル(ネットワークアクセスは不要)のjava.io.InputStream(またはサブクラス)がclose()を呼び出すときに例外をスローする状況を正確に考えていました。
答え
これが1つの状況です。


アプリケーションの別の部分が、InputStreamに関連付けられた基礎となるファイル記述子を誤って閉じました。 Javaランタイムがシステムのclose()関数を呼び出すと、ファイルハンドルが無効であることを示すEBADFエラーが発生する場合があります。


上記の状況は、おそらくアプリケーションの他の場所に重大なバグがあることを示しています。
関連記事

java - Jruby-Foreman Gemが実行されていない

java - 2つのノード間の二重接続を回避するにはどうすればよいですか?

java - 何かが起こったことを呼び出し側のクラスに通知する

java - GenericNackResponseException

java - 高度なAndroid UIを作成する方法は? [閉まっている]

java - JDK 1.6でのWebサービスクライアントの開発。JDK1.5.03との互換性が必要

java - 非サーバーアプリケーションへのServerSocketsの埋め込み

java - onCreateでLayoutParamsを設定できません

java - ツリーレイアウトをファイルに保持します。効果的に実装するには?

java - Javaで変数とメソッドを使用してクラスを動的に作成する方法は?