0

行ごとに行を追加しながらcsvファイルを生成します。つまり、ファイルの最後に1行ずつ追加します。opencsvを使用してcsvファイルの読み取りと書き込みを行います。

問題は、新しい行を作成するためにいくつかの処理を行う必要があることです。つまり、私が行っているのは、既存のcsvファイル(〜6mbファイル)を読み取り、1行を追加してファイルを書き込むことです。だからそれは

ファイルはxでした。もう1行追加すると、ファイルはx+1になります。もちろん、これには多くの読み取りおよび書き込み操作が含まれます。どうすれば効率的にそれを行うことができますか。これは宿題ではなく、ログファイルの処理でもありません。数回実行されますが、できるだけ速く実行する必要があります。

ありがとう。

私はすでに、x個の小さなcsvファイルを作成してからそれをマージすることによって大きなcsvファイルを作成することを考えていました。効率的ではないようです。質問するのはばかげているかもしれませんが、ファイルに新しい行が追加されるたびにデータがだんだん遅くなるというボトルネックがあるため、完全なデータの読み取りと書き込みを行わずに新しい行を追加する方法はありますか。

4

1 に答える 1

1

書き込みをバックグラウンド スレッドにバッファリングしないのはなぜですか (一連の行を送信し、number > N または timeelapsed > T がディスクに書き込むたびに) または、常に瞬時に一貫した結果が必要ですか?

また、通常は SEEK を使用して APPEND を実行できます (すべてを読むよりも安価です)。例としては、RandomAccessFile オブジェクトまたは追加引数を持つ FileOutputStream/FileWriter があります。もちろん、それはまだいくらか高価です。

最後に、6 MB はそれほど大きくありません。すべてを読み込んで、怠惰に書いてみませんか? これが単一の JVM プロセスであると仮定すると、それをメモリに保持するのが最も簡単な解決策です....

于 2011-09-21T18:34:58.250 に答える