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

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

  • 相关阅读:
    ACwing98 分形之城 分形图
    ACwing96 奇怪的汉诺塔 递推
    ACwing95 费解的开关 bfs
    ACwing94 递归实现排列型枚举 dfs
    ACwing93 递归实现组合型枚举 dfs
    递归型枚举总结
    洛谷P2286 宠物收养场 splay
    python之路——初识数据库
    python之路——协程
    python之路——线程
  • 原文地址:https://www.cnblogs.com/superdrew/p/8084943.html
Copyright © 2020-2023  润新知