A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 郭强 中级黑马   /  2013-4-13 01:12  /  1417 人查看  /  3 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

本帖最后由 郭强 于 2013-4-13 13:58 编辑

InputStream in = new FileInputStream(file);
int b;  
while ((b = in.read()) != -1) {
....
}
请问为什么使用read()方法读取文件很慢?

点评

请不要这样一连串的发帖,严重会被当做刷帖处理。  发表于 2013-4-13 07:57

3 个回复

倒序浏览
因为read是按照一个字节读取数据,可想而知读取的速度咯,并将读取到的字节存储到临时缓冲区b中。
回复 使用道具 举报
你这样一个一个读肯定慢,你可以试试一个数组一个数组的读
回复 使用道具 举报
首先:下面的这句话来自于API文档。从输入流中读取数据的下一个字节。返回 0 到 255 范围内的 int 字节值。如果因为已经到达流末尾而没有可用的字节,则返回值 -1。在输入数据可用、检测到流末尾或者抛出异常前,此方法一直阻塞。

Read()方法是一个阻塞式方法,她每次读取一个字节数据,返回的整数是一个0-255范围的int型数值,当读到末尾时,返回-1.之所以慢,是因为她是一个一个的读取的,不是什么高效的方法。如果读取的是纯文本数据,不放可以使用InputStreamReader 转换流,再使用BufferedReader每次读取一行
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马