zoukankan      html  css  js  c++  java
  • 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();*/
        }
    }

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

  • 相关阅读:
    在預設設定下,SQL Server 不允許遠端連接
    windows7语言包安装失败
    使一个销售组织能够销售另一个销售组织的产品
    转:多线程六种多线程方法解决UI线程阻塞
    转:BeginInvoke和EndInvoke方法 (原网址:http://www.cnblogs.com/nokiaguy/archive/2008/07/13/1241817.html)
    员工客户的统驭科目不能更改?
    公司间采购的退货(有序列号)
    排程 经典图示
    取消凭证分解 (取消公司下的多个利润中心)
    查找已删除的交货单信息
  • 原文地址:https://www.cnblogs.com/superdrew/p/8084943.html
Copyright © 2011-2022 走看看