拷贝数据的方法–建立缓冲区
package com.fenqing.Stream;
import java.io.BufferedInputStream;
import java.io.BufferedOutputStream;
import java.io.FileInputStream;
import java.io.FileOutputStream;
import java.io.IOException;
public class demo5_BufferCopy {
/**
* A:缓冲思想
* 字节流一次读写一个数组的速度明显比一次读写一个字节的速度快很多,
* 这是加入了数组这样的缓冲区效果,java本身在设计的时候,
* 也考虑到了这样的设计思想(装饰设计模式后面讲解),所以提供了字节缓冲区流
* B.BufferedInputStream
* BufferedInputStream内置了一个缓冲区(数组)
* 从BufferedInputStream中读取一个字节时
* BufferedInputStream会一次性从文件中读取8192个, 存在缓冲区中, 返回给程序一个
* 程序再次读取时, 就不用找文件了, 直接从缓冲区中获取
* 直到缓冲区中所有的都被使用过, 才重新从文件中读取8192个
* C.BufferedOutputStream
* BufferedOutputStream也内置了一个缓冲区(数组)
* 程序向流中写出字节时, 不会直接写到文件, 先写到缓冲区中
* 直到缓冲区写满, BufferedOutputStream才会把缓冲区中的数据一次性写到文件里
*/
public static void main(String[] args) throws IOException {
FileInputStream fis=new FileInputStream("xxx.txt"); //创建输入,输出流对象,关联文件xxx.txt
FileOutputStream fos=new FileOutputStream("copyxxx.txt");
BufferedInputStream bis=new BufferedInputStream(fis); //创建缓冲区对象,对输入输出流进行包装
BufferedOutputStream bos=new BufferedOutputStream(fos);
int b;
while((b=bis.read())!=-1){ //用包装之后的bis来调用read()方法
bos.write(b);
}
bis.close();
bos.close();
}
}