java读取文件特别慢_如何提高在Java中读取大文件的速度?

我只读了一个大小为167MB且行号为1884000的文件.我使用的方法是BufferedReader,以获得读取它的效果.

我注意到,随着当前行号的增加,读取文件的过程越来越慢(在这种情况下,我花了3小时30分钟完成它).

我知道使用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);

}

}

最佳答案 你应该能够在这里找到答案:

要获得最佳的Java读取性能,需要记住以下四点:

>通过一次读取一个数组来最小化I / O操作,而不是一次读取一个字节.一个8K字节的阵列是一个很好的大小.

>通过一次获取数据数组来最小化方法调用,而不是一次获取一个字节.使用数组索引来获取数组中的字节数.

>如果您不需要线程安全,请最小化线程同步锁.对线程安全类进行较少的方法调用,或者使用非线程安全的类,如FileChannel和MappedByteBuffer.

>最大限度地减少JVM / OS,内部缓冲区和应用程序阵列之间的数据复制.将FileChannel与内存映射一起使用,或使用直接或包装的数组ByteBuffer.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值