IO流--buffer

示例展示:

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();*/
    }
}

结果展示:就得自己玩了。。

posted @ 2017-12-22 10:53  superdrew  阅读(524)  评论(0编辑  收藏  举报