第三次学JAVA再学不好就吃翔(part103)--BufferedInputStream和BufferOutputStream
学习笔记,仅供参考,有错必纠
BufferedInputStream和BufferOutputStream
BufferedInputStream
BufferedInputStream
为另一个输入流添加一些功能,即缓冲输入以及支持 mark
和 reset
方法的能力。在创建 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相关推荐
- 第三次学JAVA再学不好就吃翔(part107)--字符流的拷贝
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流的拷贝 拷贝纯文本文件 注意事项 自定义字符数组的拷贝 IO流 字符流的拷贝 拷贝纯文本文件 zzz.txt: 安徽财经大学 JAVA代码: pa ...
- 第三次学JAVA再学不好就吃翔(part106)--字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 字符流输入流FileReader 字符流是什么 FileReader类构造方法 举个例子 字符流输出流FileWriter FileWriter构造方法 ...
- 第三次学JAVA再学不好就吃翔(part46)--Scanner类
学习笔记,仅供参考 文章目录 Scanner类 Scanner获取数据出现的问题 Scanner类 概述 Scanner是在java.util包下的一个类,使用该类时我们需要导包.这个类被final修 ...
- 第三次学JAVA再学不好就吃翔(part117)--单例设计模式
学习笔记,仅供参考,有错必纠 文章目录 多线程 单例设计模式 饿汉式 懒汉式 第三种格式 Timer类 线程的五种状态 多线程 单例设计模式 单例设计模式,即保证类在内存中只有一个对象,如何保证类在内 ...
- 第三次学JAVA再学不好就吃翔(part109)--LineNumberReader类
学习笔记,仅供参考,有错必纠 IO流 LineNumberReader类 该类继承自java.io.BufferedReader,该类可以跟踪行号的缓冲字符输入流.此类定义了方法 setLineNum ...
- 第三次学JAVA再学不好就吃翔(part108)--带缓冲的字符流
学习笔记,仅供参考,有错必纠 文章目录 IO流 带缓冲的字符流 BufferedReader和BufferedWriter readLine和newLine方法 IO流 带缓冲的字符流 Buffere ...
- 第三次学JAVA再学不好就吃翔(part7)--基础语法之运算符
学习笔记,仅供参考 文章目录 JAVA基础语法 运算符 算数运算符 算术运算符 ++和-- 赋值运算符 关系运算符 JAVA基础语法 运算符 什么是运算符 就是对常量和变量进行操作的符号. 运算符的分 ...
- 第三次学JAVA再学不好就吃翔(part115)--多线程
学习笔记,仅供参考,有错必纠 文章目录 多线程 多线程引入 什么是线程 多线程并行和并发的区别 Java程序运行原理 多线程的实现方式 多线程实现的方式1 多线程程序实现的方式2 以上两种实现方式的区 ...
- 第三次学JAVA再学不好就吃翔(part113)--对象操作流
学习笔记,仅供参考,有错必纠 对象操作流 对象操作流可以将一个对象写出, 或者读取一个对象到程序中,也就是执行了序列化和反序列化的操作. 举个例子 先构造一个Role类: package com.gu ...
最新文章
- 办公电脑选购方案指南
- 查看centos系统配置详细信息
- Js实现点击超链接弹出层,效果仿Discuz登录!
- 【FastDev4Android框架开发】RecyclerView完全解析之下拉刷新与上拉加载SwipeRefreshLayout(三十一)...
- php引用计数的基本知识
- 工作5年左右的程序员如何在职业瓶颈期内快速提升自己的身价?提升后如何有效变现自己的高质量技能?...
- 04-Debug FS
- 程序员作图工具和技巧,你 get 了么?
- [mark] some free templates sites
- 移动平台前端开发总结(针对iphone,Android等手机)
- Win10窗口拖动时自动最大化的问题,屏幕显示绿框,中间显示1
- Windows - 安装/卸载服务 - 学习/实践
- 十大热门编程语言:不死 Java、不朽 C/C ++、新贵 Python
- [转载] 古稀之年被判无期,84 岁再成亿万富翁,一代商业传奇落幕!
- 卫星遥感技术应用与农业干旱监测的研究进展
- SqlServer 如何插入图片和导出图片数据
- 旋转正方体加径向渐变
- CSDN问答——精选问答Vol.7
- Cadence Allegro如何加密PCB文件?
- 【c++】2020大一下c++期中考前小练习1
热门文章
- java oracle 视图不存在_Weblogic 10.3,JDBC,Oracle,SQL - 表或视图不存在
- python函数参数为类对象_将Cython类对象作为参数传递给C函数
- Maven仓库搭建(一):一台HTTP服务器即可(Tomcat、Apache或Nginx)
- eclipse下看android support v4源码
- xtrabackup实现数据备份与恢复
- FusionInsight LibrA V100R002C80SPC300安装指南
- Azure 中国篇之计算服务—多个站点的×××配置
- nginx tomcat 负载
- 如何使用新的邮件传输规则和邮件策略
- SnipperImages(Silverlight DEMO)控件设计之--Slider和ColorSlider