IO3 - buffer

buffer

public class FileCopy_Buffer {
    public static void main(String[] args) throws Exception{

        //TODO IO 文件复制

        //数据源文件对象
        File srcFile = new File("E:\\.就业\\code\\day1\\IO_File\\test.txt");

        //数据目的文件对象(自动生成)
        File destfile = new File("E:\\.就业\\code\\day1\\IO_File\\test.txt.copy");

        //TODO FileInputStream  文件输入流(管道对象)
        FileInputStream in = null;
        //TODO FileOutputStream  文件输出流(管道对象)
        FileOutputStream out = null;

        //TODO BufferedInputStream  缓冲输入流(管道对象)
        BufferedInputStream buffIn = null;
        //TODO BufferedOutputStream  缓冲输出流(管道对象)
        BufferedOutputStream buffOut = null;

        //TODO 创建缓冲区
        byte[] cache = new byte[2];

        try{
            in = new FileInputStream(srcFile);
            out = new FileOutputStream(destfile);

            buffIn = new BufferedInputStream(in);    //与文件输出管道对接
            buffOut = new BufferedOutputStream(out); //与文件输入管道对接
            //阀门开关用 buffIn和buffOut 操作

            //每一打开阀门只传输一个数据
            //TODO .read()  打开阀门,流转数据(输入数据到管道)
            //int data = in.read();
            //TODO .write(data)  打开阀门,流转数据(从管道输出数据)
            //out.write(data);
            //如果文件数据全部读取后,再读取,则读取结果为 -1 (表示无效-结尾)

            int data = -1;
            while ((data = buffIn.read(cache)) != -1){
                //每一次将文件数据尽可能多的放入缓冲区 -- 最大为 buffer容量cache
                buffOut.write(cache,0, data);
                //缓冲区数据量为 0 时停止 -- 每一次将缓冲区中所有数据输出
            }

        }catch (IOException e){
            throw new RuntimeException(e);
        }finally {
            //TODO 关闭管道
            if(buffIn != null){
                try {
                    buffIn.close();
                }catch (IOException e){
                    throw new RuntimeException(e);
                }
            }
            if(buffOut != null){
                try {
                    buffOut.close();
                }catch (IOException e){
                    throw new RuntimeException(e);
                }
            }
        }
    }
}
posted @   LaViez  阅读(88)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 在鹅厂做java开发是什么体验
· 百万级群聊的设计实践
· WPF到Web的无缝过渡:英雄联盟客户端的OpenSilver迁移实战
· 永远不要相信用户的输入:从 SQL 注入攻防看输入验证的重要性
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
点击右上角即可分享
微信分享提示