我有一个包含大约 10 万行的文件“文件 1”。
我必须逐行读取此文件,并在每一行添加一些文本并将其写入另一个文件“文件 2”。
我不想对每一行的“文件 2”执行写操作,因为它很昂贵。
将“文件 1”的每个修改行保存在内存中的更好选择是什么?
ArrayList 或 StringBuilder 或其他什么?
最后我会将内存中的完整数据写入“文件2”。
使用适当大小的缓冲区可能没有您想象的那么昂贵。当您的问题看起来更像是流处理时,将所有内容保留在内存中听起来是个坏主意。
从 a 读取文件 1 BufferedReader
,更改某些内容并将结果传递给 aBufferedWriter
可能是您最好的选择。
只需使用 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 来使用本机操作系统进程
检查此链接以获取更多信息
http://docs.oracle.com/javase/tutorial/essential/io/file.html