您的位置:首页 > 编程语言 > Java开发

【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("复制成功!!");
}
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  io流 io iostream java 数据