hyuuge(.csv)ファイルの最初の1万行が必要です。
の素朴な方法
1)リーダーとライターを作成する
2)元のファイル行を1行ずつ読み取る
3)最初の1万行を新しいファイルに書き込む
最速になることはできませんね?
これは私のアプリでは一般的な操作になるので、速度について少し心配していますが、興味があります。
ありがとう。
hyuuge(.csv)ファイルの最初の1万行が必要です。
の素朴な方法
1)リーダーとライターを作成する
2)元のファイル行を1行ずつ読み取る
3)最初の1万行を新しいファイルに書き込む
最速になることはできませんね?
これは私のアプリでは一般的な操作になるので、速度について少し心配していますが、興味があります。
ありがとう。
Javaで高速I/Oを実行する方法はいくつかありますが、特定のケースのベンチマークがなければ、図やアドバイスを引き出すのは難しいです。ベンチマークを試す方法は次のとおりです。
10,000行程度の読み取り/書き込みのみを行う場合:
BufferedReader.readLine()
そうは言っても、何かを使用して一度に1行を読むよりもうまくいくことができます。
ファイルの文字エンコードによっては、BufferedInputStreamと大きなバッファーサイズのBufferedOutputStreamを使用してバイト単位のI / Oを実行すると、パフォーマンスが向上します。ループを記述してバイトを読み取り、条件付きでラインカウンターを更新し、必要な行数をコピーするまでバイトを書き込みます。(これは、バイトを調べることでCRおよび/またはLF文字を検出できることを前提としています。これは、私が知っているすべての文字エンコードに当てはまります。)
NIOとByteBuffersを使用すると、メモリ内のコピーの量をさらに減らすことができますが、CR/LFカウントロジックはより複雑になります。
しかし、あなたが尋ねるべき最初の質問は、これを最適化することをわざわざする価値があるかどうかです。
線は同じ長さですか。その場合は、RandomAccessFileを使用してxバイトを読み取り、それらのバイトを新しいファイルに書き込むことができます。ただし、かなりメモリを消費する可能性があります。これはもっと速いと思いますが、おそらくベンチマークする価値があります。このソリューションは、固定長の回線に対してのみ機能します