0

大量のデータをバイナリ ファイルに書き込もうとしています。大量のデータであるため、これを高速に実行することが重要であり、データを 1 つずつ int として書き込めるようにしたいと考えています。RandomAccessFile、などを試しましたがBufferedWriterDataOutputStreamそれらはすべて遅すぎるか、int を書き込めません。私を助けるかもしれないアイデアはありますか?

4

3 に答える 3

3

int をバイトに変換する正しいコードを記述すれば、すべてのストリームで「int を書き込む」ことができます。

Java の 2 つの「高速」IO オプションは、NIO バッファのBufferedOutputStream上にFileOutputStreamあり、それを使用します。FileChannel

書き込んでいるのが非常に多くのint値だけである場合は、IntBufferインスタンスを使用してデータを に渡すことができますfileChannel

さらに、「一度に 1 つずつ」は一般に「高速」と互換性がありません。遅かれ早かれ、データはブロック単位でディスクに移動する必要があります。少量のデータを強制的にディスクに保存すると、プロセスが非常に遅くなることがわかります。たとえば、整数値をバッファーに追加し、バッファーがいっぱいになったときにバッファーに書き込み、それから繰り返すことができます。

于 2012-09-09T16:54:38.947 に答える
0

java.nioパッケージを見てみましょう。必要な目的に使用できるクラスが見つかります。

于 2012-09-09T16:54:29.127 に答える
0

一度に 1 int ずつファイルに書き込むことは、本質的に高速な操作ではありません。bufferedwriter を使用しても、潜在的に多くの関数呼び出しを行っている可能性があります (バッファを十分な大きさに設定していない場合は、まだ多くのファイル書き込みを行っている可能性があります)。

整数を配列に入れ、ByteBuffer を使用してそれをバイト配列に変換し、そのバイト配列をファイルに書き込もうとしましたか?

于 2012-09-09T17:03:35.790 に答える