java - 将大字符串写入文件的问题
问题描述
我正在尝试在 Base64 中编写一个字符串,这个字符串代表一个 PDF 文件,
for (int i = 0; i < 500; i++) {
cedula++;
escribirArchivo.escribirInfoEnElArchivo(data1.append(pdf).append(",").append(cedula).toString());
escribirArchivo.escribirInfoEnElArchivo(data2.append(pdf2).append(",").append(cedula).toString());
escribirArchivo.escribirInfoEnElArchivo(data3.append(pdf3).append(",").append(cedula).toString());
}
这是我写文件的方法
public void escribirInfoEnElArchivo( String infoToWrite) {
try {
fileWriter.write(infoToWrite + "\n");
} catch (IOException e) {
e.printStackTrace();
}
}
这在某些时候消耗了大约 2-3GB 的内存,我用完了内存并抛出堆内存错误,我怎样才能以更好的方式执行此操作?
解决方案
正如 azurefrog 在他的评论中所说,在写入之前首先创建整个字符串对内存来说非常昂贵。无需构建字符串并将其传递给escribirInfoEnElArchivo()
,只需传递 pdf 并使用文件编写器从那里写入。如果您需要附加其他信息,您可以在escribirInfoEnElArchivo()
编写 pdf 后添加。
推荐阅读
- c# - 如何在 WinForms 设计器中隐藏自定义属性中的某些对象?
- java - 如何用单个正则表达式解析这些字段?
- c# - Serilog - 多线程日志记录会阻止应用程序取消
- javascript - 如何通过 JavaScript 将结果与另一个文本一起使用
- c# - 如何在 C# 中构建排除条件
- django - 如何在 Django 过滤器中合并任何字段
- html - 在 Angular 中转换 CSS 类?
- azure - Service Fabric IServiceRemotingRequestMessageBody 迭代参数
- c# - 如何遍历视图模型中的列表属性
- python - 如何在不继承 QThread 并使用 QPushButtons 执行长时间运行任务的情况下构建大型 pyqt5 GUI