示例展示:
package buffer;import java.io.BufferedInputStream; import java.io.BufferedOutputStream; import java.io.FileInputStream; import java.io.FileNotFoundException; import java.io.FileOutputStream; import java.io.IOException; import java.io.InputStream; import java.io.OutputStream;/*** 使用缓冲字节流复制文件 (包装流)* BufferedInputStream BufferedOutputStream* @author superdrew* * 使用缓冲字节流 可以提高读写的效率* 1.认识什么是缓冲流* InputStream OutputStream 字节流 * BufferedInputStream BufferedOutputStream 处理流 包装流* * 2.好处:* 提供了缓冲区,提高了效率,简化操作 * 3.原理:输入流和输出流两段提供了 默认大小是 8192 的缓冲区 占用内存空间* 其实就是一个字节数组 * 具体原理:看图* 减少硬盘的读取次数,效率提高了** 使用缓冲区 如果流不关闭,文件小于8192,复制完没有任何内容* 4.输出缓冲区的刷新* 1.手动刷新 bos.flush(); * 2.自动刷新 满了自动刷新* 3.close时,会自动刷新** 5.关闭高层流的时候,底层的流会自动关闭*/ public class TestBuffered {public static void main(String[] args) throws IOException {//创建 缓冲字节流 输入流/*InputStream in = new FileInputStream("d:/sxt.txt");BufferedInputStream bis = new BufferedInputStream(in);*///创建缓冲字节流 输出流/*OutputStream os = new FileOutputStream("d:/sxt2.txt");BufferedOutputStream bos = new BufferedOutputStream(os);*///合并上面代码:简化BufferedInputStream bis = new BufferedInputStream(new FileInputStream("d:/mp4.rmvb"));//资源路径(相对/绝对)BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("d:/mp42.rmvb"));//资源路径(相对/绝对)//中转站 一个字节(水杯)/*int n =0;n = bis.read();while(n!=-1){bos.write(n);n = bis.read();}*///中转站使用 一个 字节数组 (水桶)byte [] buf = new byte [1024];int n = bis.read(buf);while(n!=-1){bos.write(buf,0,n);//写n = bis.read(buf);//再读 }//手动刷新输出流的缓冲区//bos.flush();//关闭 bos.close();bis.close();/*os.close(); //可有可无!in.close();*/} }
结果展示:就得自己玩了。。