2

ObjectInputStreamから読み取っていますが、オブジェクトの数が事前にわかりません。したがって、EOF例外catchブロックを使用して、ファイルのENDに到達したことを検出し、ファイルを閉じます。

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

  • それが良いアプローチではない場合、それはいくつかのより良い方法で行うことができますか?

4

3 に答える 3

1

はい。オブジェクトをシリアル方式で読み取っていて(シリアル方式で書き込まれた、つまりo1、o2、o3)、ストリームに他の情報がまったくない場合は可能です。

これを回避する2つの方法:

  • 要素を含むファイルにリストを書き込んでから、クライアントに単一のオブジェクト、リストを読み取らせることによって
  • ストリームの開始時に、クライアントが期待できるオブジェクトの数を示すintを書き込むことによって

ネットワークを介してオブジェクトストリームを送信する場合は、少し厄介になりますが、RMIを使用する方が、手動でコーディングするよりも適切です。

于 2011-06-29T17:32:09.290 に答える
1

選択肢はあまりありません。ObjectInputStream.readObject()は、オブジェクトが不足したときにEOFExceptionをスローします。EOSを自分でストリームに冗長にエンコードしない限り、EOFExceptionをキャッチする必要があります。

于 2011-06-30T10:50:41.200 に答える
0

この方法を使用するavailable()ことはあなたの代わりになりますか?EoFの前に利用可能なゼロを返さないストリームに依存できますか?

于 2011-06-29T19:25:51.287 に答える