有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

向文件写入大字符串的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的ram,在某个时候我耗尽了内存,抛出堆内存并出错,我如何才能以更好的方式执行呢


共 (1) 个答案

  1. # 1 楼答案

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