【发布时间】:2018-04-27 19:11:25
【问题描述】:
我正在尝试从 DB 中写一个大文件文本,大约 2 百万行。 我观察到当 PrintWriter 正在打印 (println()) 行时,文件大小始终为 0 字节。流关闭后文件具有大小数据。 它导致所有数据首先保存在内存中,并在流关闭时释放它。 就我而言,在消耗了 1 百万数据 +- 2.5GB 内存之后。应用程序崩溃。 是否可以实时写入数据并防止内存消耗?
这是一个例子:
File file = new File("file.txt");
PrintWriter out;
out = new PrintWriter(new OutputStreamWriter(new BufferedOutputStream(new FileOutputStream(file)), "UTF-8"));
for (int i=0; i < 9999999; i++){
out.println("some data here");
}
out.close();
【问题讨论】:
-
为什么要让 PrintWriter 创建复杂化?您可以只使用 new PrintWriter("file.txt");要回答您的问题,请尝试每 'n' 行使用一次 flush()。
标签: java printwriter