将大字符串写入文件的问题

时间:2019-06-28 20:27:17

标签: java string file base64

我正在尝试在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的内存,并且在堆内存中抛出并出错,我该如何更好地执行呢?

1 个答案:

答案 0 :(得分:1)

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