InputStream是Java标准库提供的最基本的输入流,位于java.io包里,InputStream是一个抽象类,是所有输入流的超类

FileInputStream是InputStream的子类,就是从文件流中读取数据。FileInputStream是读取一个文件来作InputStream。

BufferedInputStream是缓存输入流。继承于FilterInputStream。作用是为另一个输入流添加一些功能。BufferedInputStream是套在某个其他的InputStream外,起着缓存的功能,用来改善里面那个InputStream的性能(如果可能的话),作用是为另一个输入流添加一些功能。它自己不能脱离里面那个单独存在,所以可以把BufferedInputStream套在FileInputStream外,来改善FileInputStream的性能。

区别就是:

FileInputStream是字节流,BufferedInputStream是字节缓冲流,使用BufferedInputStream读资源比FileInputStream读取资源的效率高,FileInputStream的read()方法会出现阻塞;

就是说,当缓冲区的大小比8192小的时候,BufferedInputStream的效率更好。

BufferedInputStream有一个默认为8192字节的缓冲区,当自定义的缓冲区小于8192的时候,默认一次性从硬盘中读取8192字节到内存中,然后每次只按自定义的缓冲量返回数据,性能好在了减少了读取硬盘的次数。

以下代码会更好的帮大家理解。

代码实现:

FileInputStream read()方法实现:

public class Demo05 {public static void main(String[] args) throws IOException {//InputStream字节输入流父类//特点:读取字节内容的输入流FileInputStream fis = new FileInputStream("E:\\KuGou\\test02.txt");//逐个字节读取:每次调用read()方法,都会进行一次磁盘的读取,返回一个int类型的字节值int data = -1;while((data=fis.read())!=-1) {System.out.println(data);}System.out.println("-----------");//方式二//批量读取(自建缓冲区):每次调用read(缓冲区字节数组)方法,都会进行一次磁盘的读取,返回本次//并将读取到的内容,填充至自建缓冲区//读取至文件末尾,返回-1byte[] buff = new byte[4096];//字节数组代表一个缓冲区int len = -1;while((len=fis.read(buff))!= -1) {System.out.println(Arrays.toString(buff));}}
}

BufferedInputStream read()方法代码实现

public class Demo05 {public static void main(String[] args) throws IOException {//InputStream字节输入流父类//BufferedInputStream时FilterInputStream包装(装饰)器的子类//特点:自带缓存区(默认8192个字节),必须配合FileInputStream类进行工作BufferedInputStream bos = new BufferedInputStream(new FileInputStream("E:\\壁纸总和\\壁纸\\杨洋\\young.jpg"));//读取//方式一:逐个字节读取,每调用一次read()方法,都会到BufferedInputStream的缓存区中读取一个字节//缓冲区内容读取完毕后,会一次性fill满//bos.read();//方式二:(推荐)//批量读取(自建缓存区):byte[] buffData =new byte[128];int size = -1;while((size = bos.read(buffData))!=-1) {System.out.println(Arrays.toString(buffData));}}}

FileInputStream和BufferedInputStream的比较相关推荐

  1. FileInputStream 与 BufferedInputStream的比较

    先介绍一下为啥比较他俩,因为BufferedInputStream是FileInputStream 的装饰者,但是我发现FileInputStream 中也是有缓存的,所以我就好奇装饰者起什么作用呢, ...

  2. FileInputStream与BufferedInputStream有哪些区别?

    文章目录 前言 一.FileInputStream(文件输入流) 1.逐个字节读取: 2.批量字节读取: 二.BufferedInputStream(缓冲输入流) 前言 InputStream(字节输 ...

  3. Java API —— IO流( FileInputStream FileOutputStream BufferedInputStream BufferedOutputStream )...

    1.IO流概述 · IO流用来处理设备之间的数据传输        · 上传文件和下载文件        · Java对数据的操作是通过流的方式 · Java用于操作流的对象都在IO包中 2.IO流分 ...

  4. FileInputStream与BufferedInputStream的区别

    FileInputStream是InputStream的子类,即从文件流中读取数据,它的父类InputStream是java中自带的输入流,位于java.io包下,是一个抽象类,实现Closeable ...

  5. Java IO流学习总结三:缓冲流-BufferedInputStream、BufferedOutputStream

    Java IO流学习总结三:缓冲流-BufferedInputStream.BufferedOutputStream 转载请标明出处:http://blog.csdn.net/zhaoyanjun6/ ...

  6. BufferedInputStream与ImageInputStream

    转载自 BufferedInputStream与ImageInputStream BufferedInputStream读取图片文件(jpg格式),但是图片大小在1M到200M之间都有,由于图片太大, ...

  7. BufferedInputStream。。。。。。。BufferedReader和BufferedWriter

    BufferedInputStream是套在某个其他的InputStream外,起着缓存的功能,用来改善里面那个InputStream的性能(如果可能的话),它自己不能脱离里面那个单独存在.FileI ...

  8. FileReader FileInputStream InputStreamReader BufferedReader 作用与区别

    FileReader FileInputStream InputStreamReader BufferedReader 作用与区别 ava.io下面有两个抽象类:InputStream和Reader ...

  9. java缓冲输入流_java入门 -- Java I/O(五)输入缓冲流BufferedInputStream

    /* * 缓冲输入字节流: * 作用:提高输入效率,比缓冲字节流跟高 * 输入字节流体系: * ----| InputStream 抽象列 * ---------| FileInputStream 读 ...

最新文章

  1. linux回显冲突,Linux-Binfmt-support-不允许我回显注册
  2. win32中GBK、UTF8的互转
  3. P4 详解各硬件部分
  4. JSON的應用(Javascript Object Nonation)
  5. android view setleft,android – 在新textview上使用setLeft / setRight方法
  6. 全球最快65W闪充!OPPO Reno Ace正式发布 高达限量定制版售价仅3599元
  7. 创建表时参数PCTFREE和PCTUSED是什么意思?
  8. 大连理工计算机基础作业2,大工18秋《计算机应用基础》在线测试2答案
  9. YOLOV3训练环境的搭建
  10. 简单python代码讲解-【第一期】用pycharm来编写简单代码(python教程)
  11. 小程序和app究竟哪个好?
  12. FIR滤波器结合快速卷积滤波
  13. 探访IBM企业级区块链-CSDN公开课-专题视频课程
  14. 三年上一大台阶,联想凌拓做对了什么?
  15. C#中使用OracleTransaction
  16. Java题目汇总(二)
  17. toeic 备考常用论坛
  18. 40款非常酷的国外创意名片设计欣赏(上)
  19. Ecplise捕捉异常的快捷键
  20. 一次网络请求是如何实现的

热门文章

  1. 安卓WebView的那些坑
  2. python的scrapy爬虫模块间进行传参_小猪的Python学习之旅 —— 4.Scrapy爬虫框架初体验...
  3. fseek, _fseeki64 函数应用
  4. C语言修仙电影,长评 是宇宙啊 评《C语言修仙》 时间:2020-02-24 22:39:01
  5. 计算机关闭这些程序,电脑中哪些进程可以关闭? 节约资源
  6. 导入数据库显示服务器发生意外,mysql 数据库无法启动(Ignoring the redo log due to missing M...
  7. python print 字体大小_Python print 玩转“点阵字”
  8. 实验改变人类:震撼世界的十大科学实验- -
  9. 史上最全软件测试工程师常见的面试题总结【杭州多测师】【面试题】【杭州多测师_王sir】...
  10. uniapp 获取设备唯一标识(OAID、AAID、AndroidID、IMEI等)插件 Ba-IdCode