0

ランダム アクセス ファイル内の位置が書き込まれていないかどうかを確認する必要があります。これに関する問題は、位置が実際に書き込まれていない場合に、(予想どおり) EOFException が発生することです。この問題を解決するために RandomAccessFile のドキュメントを読んでいて、オンラインで調べてみました。

私が試したこと:

  • try-catch ブロックを使用し、EOFException が発生するたびにキャッチします (try-catch を条件ステートメントとして使用します)。それは機能しますが、それは恐ろしい習慣であり、非常に非効率的です。私の場合、ほとんどの場合 EOF です。

  • BufferReader を使用してループし、位置を確認します。私は多くの問題に遭遇し、より良い方法があるに違いないと判断しました。

あるファイルを別のファイルにコピーしたり、その他の回避策を実行したりしたくありません。これを行うには直接的な方法が必要であることはわかっていますが、正しい解決策を見つけることができないようです。

4

1 に答える 1

0

「仕立て屋」を書こうとしていますか?

あなたがする必要があるのは、 FileChannel.size() を使用してそこにあるデータのみを読み取る1つのスレッドを作成して、より多くのデータをチェックすることです。このデータはパイプ入力に渡されます。これにより、パイプされたストリームを継続的に読み取る 2 番目のスレッドを持つことができます。たとえば、BufferedReader とブロックを使用して、より多くのデータが必要な場合に使用できます。

于 2013-09-19T07:52:17.977 に答える