【JAVA开发之IO流1-3】IO流之缓冲流
2016-03-25 22:31
543 查看
我们知道IO流分为字符流和字节流、输出流和输入流。
上面的这些流,都是非常缓慢的,比如说,字符流是一字符一字符先弄到内存上,再把这一字符写入硬盘。一字符一字符的搬运,字节流也是这样。
这就像有很多支笔,你要把它们从一个地方拿到另一个地方,你一支一支拿肯定慢,如果我们几支几支拿起来再一起搬运,速度会很快。
缓冲流的作用就是,将一定数量的字符或字节储存到流中,再一下写入硬盘,这样就加快了读写速度。
缓冲流包括:缓冲字节流(BufferedInputStream、BufferedOutputStream)和缓冲字符流(BufferedFileWrite和BufferedFileReader),他们都属于java.io包下的类。
下面通过一个例子来解析一下缓冲字节流的作用,用缓冲字节流复制一个图片文件到别的地方。
import java.io.*; public class BufferedIOStream { public static void main(String[] args) throws IOException { /** * new出缓冲字节流(输入和输出), * 在构造方法中传入相应的字节流匿名对象, * 并在匿名对象的构造方法中指定位置路径。 * */ BufferedInputStream inBuffered=new BufferedInputStream(new FileInputStream("D:\\Demo.gif")); BufferedOutputStream outBuffered=new BufferedOutputStream(new FileOutputStream("E:\\DomeCopy2.gif")); /** * 定义一个字节数组,为2048字节,即攒够2048字节(2Kb)一下读写,即一次性读取2Kb,再一次性写入2Kb, * 比起先前读取1b就写入1b,速度会变快很多很多。 * 然后定义一个int变量,接收读取到的数据,再传入上面那个字节数组。 * 输出流的write方法里,有3个参数,传入byte数组后,传入不足2048字节的那一部分。就保证了数据的完整性 * */ byte[] bytes=new byte[2048]; int data; data=inBuffered.read(bytes); while (data!=-1){ outBuffered.write(bytes,0,data); data=inBuffered.read(bytes); } outBuffered.flush();//将流中的剩余数据都写入 /** * 关闭两个流,即关闭两个文件的内存占用 * */ inBuffered.close(); outBuffered.close(); System.out.println("复制成功!!"); } }
相关文章推荐
- java对世界各个时区(TimeZone)的通用转换处理方法(转载)
- java-注解annotation
- java-模拟tomcat服务器
- java-用HttpURLConnection发送Http请求.
- java-WEB中的监听器Lisener
- Android IPC进程间通讯机制
- Android Native 绘图方法
- Android java 与 javascript互访(相互调用)的方法例子
- 介绍一款信息管理系统的开源框架---jeecg
- 聚类算法之kmeans算法java版本
- java实现 PageRank算法
- PropertyChangeListener简单理解
- c++11 + SDL2 + ffmpeg +OpenAL + java = Android播放器
- 插入排序
- 冒泡排序
- 堆排序
- 快速排序
- 二叉查找树