150k レコードのデータベースがあります。これをできるだけ早くファイルに書き込みたい。私は多くのアプローチを試しましたが、すべてが遅いようです。これをより速くするにはどうすればよいですか?
これらのレコードを 40k のブロックで読み取りました。最初に 40k を読み取り、次に別の 40k を読み取ります。
レコードを読み取った後、このプロセスは 40,000 行を含む StringBuilder を返します。次に、この StringBuilder をファイルに書き込みます。
private static void write(StringBuilder sb, Boolean append) throws Exception {
File file = File.createTempFile("foo", ".txt");
FileWriter writer = new FileWriter(file.getAbsoluteFile(), append);
PrintWriter out = new PrintWriter(writer);
try {
out.print(sb);
out.flush();
writer.flush();
} finally {
writer.close();
out.close();
}
}
私はこの他の例を読みましたが、それは同様に遅いです:テキストファイル Java に巨大なデータを書き込む最速の方法
私もNIO APIで試しました:
private static void write(StringBuilder sb, Boolean append)) throws Exception {
FileChannel rwChannel = new FileOutputStream("textfile.txt", true).getChannel();
ByteBuffer bb = ByteBuffer.wrap(sb.toString().getBytes("UTF-8"));
rwChannel.write(bb);
rwChannel.close();
}
巨大なデータをファイルに書き込む/追加する最良の方法はどれですか?