优化的解决方案,用于在JAVA中读取文件、操作其数据并写入另一个文件

优化的解决方案,用于在JAVA中读取文件、操作其数据并写入另一个文件,java,memory,io,Java,Memory,Io,我有一个文件“文件1”,包含大约10万行 我必须逐行阅读此文件,并在每行添加一些文本,然后将其写入另一个文件“文件2” 我不想对每一行的“文件2”执行写操作,因为它很昂贵 将“文件1”的每一修改行保存在内存中,哪个选项更好 ArrayList或StringBuilder或其他什么 最后,我将把内存中的完整数据写入“文件2”。使用适当大小的缓冲区可能不会像您想象的那样昂贵。当您的问题看起来更像是流处理时,将所有内容保留在内存中听起来是个坏主意 从BufferedReader读取文件1,更改某些内容

我有一个文件“文件1”,包含大约10万行

我必须逐行阅读此文件,并在每行添加一些文本,然后将其写入另一个文件“文件2”

我不想对每一行的“文件2”执行写操作,因为它很昂贵

将“文件1”的每一修改行保存在内存中,哪个选项更好

ArrayList或StringBuilder或其他什么


最后,我将把内存中的完整数据写入“文件2”。

使用适当大小的缓冲区可能不会像您想象的那样昂贵。当您的问题看起来更像是流处理时,将所有内容保留在内存中听起来是个坏主意


BufferedReader
读取文件1,更改某些内容并将结果传递给
BufferedWriter
可能是最好的选择。

只需使用BufferedOutputStream即可减少物理写入数:

BufferedReader reader = new BufferedReader(
    new InputStreamReader (new FileInputStream ("input.txt")));
Writer writer = 
    new OutputStreamWriter(
        new BufferedOutputStream (new FileOutputStream ("output.txt")));

String line;
while ((line = reader.readLine ()) != null)
{
    writer.write (line + " foo \n");
}

reader.close ();
writer.close ();

我不认为逐行阅读会对性能产生巨大影响,如果您使用java 5及以上版本,您可以使用java.nio来使用本机OS进程

查看此链接了解更多信息

请阅读