【发布时间】:2013-08-10 09:57:27
【问题描述】:
我刚刚读取了一个大小为167MB,行号为1884000的文件。我使用的方法是BufferedReader,得到了一行读取的效果。
我注意到,随着当前行号的增加,读取文件的过程越来越慢(在这种情况下,我花了 3h30min 来完成它)。
我知道使用nio 可能会加快这个过程,但我想直接读取文件。
我的代码如下;谁能给我一些建议?非常感谢!
String htmlContentPath = html.getAbsolutePath();
BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(htmlContentPath)));
String line = null;
int cnt = 0;
while((line = reader.readLine()) != null) {
this.proc(line);
if((cnt++ % 2000) == 0) {
logger.info("current line number:\t"+cnt);
}
}
【问题讨论】:
-
proc(line)是做什么的?运行时间越长,它会减慢速度吗? -
每次迭代都需要调用
this.proc(line)吗? -
1.使用多个线程 2. 正确同步线程 3. 使用 Java NIO
Channels:) -
您没有使用 FileReader 有什么原因吗?
-
即使阅读速度很慢,我也能达到 100 MB/s vanillajava.blogspot.co.uk/2011/01/… 我怀疑不是阅读,而是你对文本的处理速度很慢。