0

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

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

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

将“文件 1”的每个修改行保存在内存中的更好选择是什么?

ArrayList 或 StringBuilder 或其他什么?

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

4

3 回答 3

1

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

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

于 2013-02-06T11:44:52.213 回答
0

只需使用 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 ();
于 2013-02-06T11:47:21.727 回答
0

好吧,我认为逐行阅读不会对性能产生巨大影响,如果您使用的是 java 5 及更高版本,则可以使用 java.nio 来使用本机操作系统进程

检查此链接以获取更多信息

http://docs.oracle.com/javase/tutorial/essential/io/file.html

于 2013-02-06T11:53:53.360 回答