首页 > 解决方案 > 将大字符串写入文件的问题

问题描述

我正在尝试在 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 的内存,我用完了内存并抛出堆内存错误,我怎样才能以更好的方式执行此操作?

标签: javastringfilebase64

解决方案


正如 azurefrog 在他的评论中所说,在写入之前首先创建整个字符串对内存来说非常昂贵。无需构建字符串并将其传递给escribirInfoEnElArchivo(),只需传递 pdf 并使用文件编写器从那里写入。如果您需要附加其他信息,您可以在escribirInfoEnElArchivo()编写 pdf 后添加。


推荐阅读