学习笔记,仅供参考,有错必纠


BufferedInputStream和BufferOutputStream

BufferedInputStream

BufferedInputStream 为另一个输入流添加一些功能,即缓冲输入以及支持 markreset 方法的能力。在创建 BufferedInputStream 时,会创建一个内部缓冲区数组。在读取或跳过流中的字节时,可根据需要从包含的输入流再次填充该内部缓冲区,一次填充多个字节。mark 操作记录输入流中的某个点,reset 操作使得在从包含的输入流中获取新字节之前,再次读取自最后一次 mark 操作后读取的所有字节。

BufferedInputStream读取文件速度比FileInputStream要快,这是因为BufferedInputStream内置了一个缓冲区(数组),BufferedInputStream会一次性从文件中读取8192个字节, 存在缓冲区中, 程序可以直接从缓冲区中逐个获取字节,而不是从硬盘上的文件中逐个获取字节,当缓冲区中所有的数据都被获取, BufferedInputStream才重新从文件中读取8192个字节。

构造方法

BufferedInputStream(InputStream in)

创建一个 BufferedInputStream 并保存其参数,即输入流 in,以便将来使用。

BufferedInputStream(InputStream in, int size)

创建具有指定缓冲区大小的BufferedInputStream并保存其参数,即输入流 in,以便将来使用。

BufferOutputStream

BufferedOutputStream也内置了一个缓冲区(数组),程序向流中写出字节时, 不会直接写到文件中, 而是先逐个字节的写到缓冲区中,直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里。

构造方法

BufferedOutputStream(OutputStream out)

创建一个新的缓冲输出流,以将数据写入指定的底层输出流。

BufferedOutputStream(OutputStream out, int size)

创建一个新的缓冲输出流,以将具有指定缓冲区大小的数据写入指定的底层输出流。

举个例子

package com.guiyang.bean;import java.awt.image.BufferedImage;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.FileOutputStream;
import java.io.IOException;public class Demo5_BufferCopy {public static void main(String[] args) throws IOException {FileInputStream fis = new FileInputStream("beiyesi.png");FileOutputStream fos = new FileOutputStream("copy.png");BufferedInputStream bis = new BufferedInputStream(fis);BufferedOutputStream bos = new BufferedOutputStream(fos);int num;while ((num = bis.read()) != -1) {bos.write(num);}bos.close();bis.close();}
}

第三次学JAVA再学不好就吃翔(part103)--BufferedInputStream和BufferOutputStream相关推荐

  1. 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...

  2. 第三次学JAVA再学不好就吃翔(part106)--字符流

    学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...

  3. 第三次学JAVA再学不好就吃翔(part46)--Scanner类

    学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...

  4. 第三次学JAVA再学不好就吃翔(part117)--单例设计模式

    学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...

  5. 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类

    学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...

  6. 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流

    学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...

  7. 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符

    学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...

  8. 第三次学JAVA再学不好就吃翔(part115)--多线程

    学习笔记,仅供参考,有错必纠 文章目录 多线程 多线程引入 什么是线程 多线程并行和并发的区别 Java程序运行原理 多线程的实现方式 多线程实现的方式1 多线程程序实现的方式2 以上两种实现方式的区 ...

  9. 第三次学JAVA再学不好就吃翔(part113)--对象操作流

    学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...

最新文章

  1. 办公电脑选购方案指南
  2. 查看centos系统配置详细信息
  3. Js实现点击超链接弹出层,效果仿Discuz登录!
  4. 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)...
  5. php引用计数的基本知识
  6. 工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能?...
  7. 04-Debug FS
  8. 程序员作图工具和技巧,你 get 了么?
  9. [mark] some free templates sites
  10. 移动平台前端开发总结(针对iphone,Android等手机)
  11. Win10窗口拖动时自动最大化的问题,屏幕显示绿框,中间显示1
  12. Windows - 安装/卸载服务 - 学习/实践
  13. 十大热门编程语言:不死 Java、不朽 C/C ++、新贵 Python
  14. [转载] 古稀之年被判无期,84 岁再成亿万富翁,一代商业传奇落幕!
  15. 卫星遥感技术应用与农业干旱监测的研究进展
  16. SqlServer 如何插入图片和导出图片数据
  17. 旋转正方体加径向渐变
  18. CSDN问答——精选问答Vol.7
  19. Cadence Allegro如何加密PCB文件?
  20. 【c++】2020大一下c++期中考前小练习1

热门文章

  1. java oracle 视图不存在_Weblogic 10.3,JDBC,Oracle,SQL - 表或视图不存在
  2. python函数参数为类对象_将Cython类对象作为参数传递给C函数
  3. Maven仓库搭建(一):一台HTTP服务器即可(Tomcat、Apache或Nginx)
  4. eclipse下看android support v4源码
  5. xtrabackup实现数据备份与恢复
  6. FusionInsight LibrA V100R002C80SPC300安装指南
  7. Azure 中国篇之计算服务—多个站点的×××配置
  8. nginx tomcat 负载
  9. 如何使用新的邮件传输规则和邮件策略
  10. SnipperImages(Silverlight DEMO)控件设计之--Slider和ColorSlider