【发布时间】:2015-03-28 12:53:55
【问题描述】:
我正在逐行读取由固定长度记录组成的文本文件,并附加一些值,然后写入另一个文件。
像往常一样,我使用 BufferedWriter,发现读取、附加值和写入另一个文件大约需要 20 分钟。
BufferedWriter br = new BufferedReader(new FileReader(infile));
if (br != null) {
for (String line; (line= br.readLine()) != null;) {
i= i+ 1;
line += " " + String.format("%09d", i) + "S";
try {
bw = new BufferedWriter(new FileWriter("out.txt",
true));
bw.write(line);
bw.newLine();
bw.close();
} catch (IOException e) {
e.printStackTrace();
}
}
这是我使用的代码。读取整个文件并附加值只需 7 秒,但写入文件似乎很慢。我知道 BufferedWriter 不可能这么慢。我没有增加缓冲区大小,因为我正在逐行阅读,出于同样的原因没有尝试 nio。
建议我一些提高速度的方法?
【问题讨论】:
-
您需要创建一个新的缓冲写入器,通过它为您处理的每一行输入打开和关闭一个文件写入器?
-
你每行都重新打开文件...怎么样,在循环之前打开一次?
标签: java