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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

  1. public static void main(String[] args) throws IOException {

  2.                 FileInputStream fr = new FileInputStream("d:\\test.txt");
  3.                 BufferedInputStream bis = new BufferedInputStream(new FileInputStream("d:\\test.txt"));
  4.                 byte[] buf = new byte[1024];
  5.                 fr.read(buf);
  6.                 bis.read(buf);
  7.                
  8.         }
复制代码
字符流缓冲区可以方便的读取一行,字节流缓冲区有什么用?
如果要读取一个文件,用FileInputStream读取与BufferedInputStream读取有什么区别?

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

2 个回复

倒序浏览
1,缓冲区:有缓冲区效率比较高....没有缓冲区是读一个字节写一个字节;
    某些情况下,如果一个程序频繁地操作一个资源(如文件或数据库),则性能会很低,此时为了提升性能,就可以将一部分数据暂时读入到内存的一块区域之中,以后直接从此区域中读取数据即可,因为读取内存速度会比较快,这样可以提升程序的性能
    缓冲区可以定义一个byte数组,,用来存储读取的数据.什么时候把byte数组存满就写一次.效率比较高减少io流读写的次数

2,区别:FileInputStream是字节流,BufferedInputStream是字节缓冲流,使用BufferedInputStream读资源比FileInputStream读取资源的效率高(BufferedInputStream的read方法会读取尽可能多的字节),且FileInputStream对象的read方法会出现阻塞;

评分

参与人数 1技术分 +1 收起 理由
黄玉昆 + 1

查看全部评分

回复 使用道具 举报
流对象增加缓冲技术最主要的目的是为了提高IO效率,顺便增加了一些使用的方法,比如你说的按行读取还有换行等等。  如果要真正明白缓冲技术是如何提高IO效率的,需要配合计算机硬件的相关知识了,应该会用用到硬盘、内存、总线之类的知识,我觉得不必太过深究,对于我们目前的水平,能记住毕老师讲的那些就够用了。
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马