java - 在java中编写大型文本文件最有效的方法是什么?

标签 java file-io out-of-memory heap-memory

我正在尝试使用以下方法编写包含一定量数据的文件:

public static <T extends SomeClass> void writeFile(String buffer, Class<T> clazz, int fileNumber) {
    String fileType = ".txt";
    File file = new File(clazz.getName()+fileNumber+fileType);
    PrintWriter printWriter = null;


    try {
        FileWriter writer = new FileWriter(file);
        printWriter = new PrintWriter(writer);
        printWriter.print(buffer);//error occurs here
        printWriter.flush();
        printWriter.close();
        System.out.println("created file: "+file.getName());


    } catch (IOException e) {
        e.printStackTrace();
    } finally{
        if(printWriter!=null){
            printWriter.flush();
            printWriter.close();
        }
    }
    System.out.println("Done!");
}

缓冲区字符串包含+-6mb的数据,当我运行代码时,我在缓冲区中得到了一个java.lang.OutOfMemoryError。

最佳答案

printWriter.print(buffer); 替换为:

for (int i = 0; i < buffer.length; i += 100) {
    int end = i + 100;

    if (end >= buffer.length) {
        end = buffer.length;
    }

    printWriter.print(buffer.substring(i, end);
    printWriter.flush();
}

关于java - 在java中编写大型文本文件最有效的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7753424/

相关文章:

java - 结果打印到控制台但不打印到文件

使用 itertools.combinations 生成对时出现 Python 内存错误

java - 如何从字符串中删除 '\' 字符

java - Splitting Deck in-half 错误?真的很简单,但我搞砸了

java - 执行线程中出现 "java.lang.OutofMemoryError"的可能原因是什么?

java - 使用 hibernate 时数据库中的 save() 和 commit() 之间的区别

macos - 如何检测文本文件是否仍被 TextEdit 打开

python - 如果我在脚本仍在执行文件 I/O 操作时突然关闭脚本,会发生什么情况?

java - OutOfMemoryError 使用 FirebaseRecyclerViewAdapter

.net - 在 .NET 中优雅地处理内存不足异常(或完全避免它)