黑马程序员技术交流社区

标题: 为什么使用read()方法读取文件很慢? [打印本页]

作者: 郭强    时间: 2013-4-13 01:12
标题: 为什么使用read()方法读取文件很慢?
本帖最后由 郭强 于 2013-4-13 13:58 编辑

InputStream in = new FileInputStream(file);
int b;  
while ((b = in.read()) != -1) {
....
}
请问为什么使用read()方法读取文件很慢?
作者: 董维明    时间: 2013-4-13 09:28
因为read是按照一个字节读取数据,可想而知读取的速度咯,并将读取到的字节存储到临时缓冲区b中。
作者: 。。。。。。    时间: 2013-4-13 12:56
你这样一个一个读肯定慢,你可以试试一个数组一个数组的读
作者: HM赵磊    时间: 2013-4-13 13:52
首先:下面的这句话来自于API文档。从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

Read()方法是一个阻塞式方法,她每次读取一个字节数据,返回的整数是一个0-255范围的int型数值,当读到末尾时,返回-1.之所以慢,是因为她是一个一个的读取的,不是什么高效的方法。如果读取的是纯文本数据,不放可以使用InputStreamReader 转换流,再使用BufferedReader每次读取一行




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2