次のコードでファイルに書き込みますが、30MB後、40MBまたは50MBになると非常に遅くなります。遅くなくファイルに保存するためにJavaのBufferedWriterを最適化するにはどうすればいいですか?
public class FileClass {
public static BufferedWriter bw;
public static void WriteFile(String filename, String text) {
try {
bw = new BufferedWriter (new FileWriter("all.txt", true));
bw.write(text);
bw.flush();
} catch (IOException e) {
e.printStackTrace();
}
}
}
マイコンピュータの仕様:Dell Latitude E6420、8GB RAM、1TB HDD、Windows 8.1。
私はFileWriter
だけを使ってみましたが、それは同じです。私はbw.close()
コールを削除しました。なぜなら、含まれていれば遅いからです。それがなければ速くなりますが、ファイルへの2回の書き込みの後には遅くなります。皆さんがスニペットを持っていれば、私は非常に速くスローダウンせずにファイルに書き込むことができます...それは素晴らしいことでしょう!
確かに簡単な答えは次のとおりです。それを洗い流してはいけません。そして、もしあなたがそれをフラッシュし続けたいならば、すべての書き込みで明示的にフラッシュすることがバッファリングの目的を打ち負かすので、 'FileWriter'に直接書き込んでください。 –
また、 'seek 'とappendに関連している可能性があります。' FileWriter'を保つか、ファイルローリング戦略を使用してみてください。 –
どうすればいいのか分かりますか?Andy Turner ...ありがとう – PenDiv