2011-06-29 8 views
2

私はObjectInputStreamから読み込み中で、オブジェクトの数はあらかじめわかりません。したがって、EOF例外キャッチブロックを使用してファイルの終わりに達したことを検出し、ファイルを閉じます。EOF例外を使用してファイルの終わりを検出するのがよい方法ですか?

  • 良い/安全なプログラミングの練習ですか?

  • 良いアプローチではない場合は、より良いやり方で行うことができますか?

+0

ファイルの読み取りに使用しているコードを通過できますか? – Giann

+0

私は、例外が例外的な状況以外には何のためにも良いとは思わない - EOFは今やって来ることではない。 –

+1

@Boris Treukhovしかし、彼が使用しているAPIはどのように使用するように設計されています。それはEOSでEOFExcepionをスローします、あなたはそれをキャッチする必要があります。 – EJP

答えて

1

多くの選択肢がありません。 ObjectInputStream.readObject()は、オブジェクトがなくなったときにEOFExceptionをスローします。 EOSをストリームに重複してエンコードしない限り、EOFExceptionをキャッチする必要があります。

1

はい、(すなわちO1シリアルに書き込まれた、O2、O3)シリアルにオブジェクトを読んでいると、他の情報がストリーム内に全く存在しない場合。要素を含むファイルにリストを書き込むことにより

  • し、クライアントが起動時にint型を書き込むことにより、単一のオブジェクト、リスト
  • を読む行います。あなたはこれを回避することができます

    二つの方法クライアントが期待できるオブジェクトの数を表すストリームの数

ネットワークを介してオブジェクトストリームを送信している場合は、少し毛むくじゃらしてしまいますが、もう一度、RMIを使用する方がよいでしょうそれを手作業でコード化する。

+0

@Sanjay私のユーザーのケースは、あなたと同じです.... .... あなたが言及した2つの回避策は私のためには機能しません。 – ManojGumber

+0

@Manoj:何と同じ?ソケットを介してデータを読み取っていますか? –

+0

私はシリアル形式で書かれたオブジェクトをシリアル形式で読んでいます – ManojGumber

0

available()メソッドを使用すると、あなたの代わりになるでしょうか?あなたはEoFの前に利用可能なゼロを返さないストリームに頼ることができますか?

+2

利用可能なものが信頼できる方法ではないと主張する多くの情報源に出くわしました – ManojGumber

+0

Javadocを含みます。 – EJP

関連する問題