zoukankan      html  css  js  c++  java
  • Java基础之IO流,自定义字节流缓冲区装饰类(模仿)

    import java.io.*;

    /*
        自定义缓冲区
    */
    class MyBufferedInputStreamDemo
    {
        public static void main(String[] args)  throws IOException
        {
            MyBufferedInputStream mis = new MyBufferedInputStream(new FileInputStream(new File("001.avi")));
            BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream(new File("001-1.avi")));
            
            int ch = 0;
            while((ch=mis.read())!=-1)
            {
                bos.write(ch);
            }
            
            mis.close();
            bos.close();
        }
    }

    class MyBufferedInputStream
    {
        private InputStream inputStream = null;
        private byte[] buffer = new byte[1024 * 4];
        private int pos = 0,count=0;
        
        public MyBufferedInputStream(InputStream inputStream) throws IOException
        {
            this.inputStream = inputStream;
        }
        
        public int read() throws IOException
        {
            //如果结果长度为零,则从流中读取数据
            if(count==0)
            {
                //读取数据被放入字节数组中
                count = this.inputStream.read(buffer);    
                
                //如果读取的结果长度为-1,说明文件读取完成
                if(count<0)
                    return -1;
                
                //每次重新从流中取数据时,将指针重置为0
                pos = 0;
                
                byte b = buffer[pos];            
                count--;
                pos++;
                return b&0xff;
            }
            else
            {
                byte b = buffer[pos];            
                count--;
                pos++;
                return b&0xff;
            }
        }
        
        public void close() throws IOException
        {
            this.inputStream.close();
        }
    }
  • 相关阅读:
    Flink 1.9 实战:使用 SQL 读取 Kafka 并写入 MySQL
    Spring 社区的唯一一个国产开源项目
    使用DynamoShake从dynamodb迁移到mongodb
    1754-I Hate It 线段树(单点替换,区间最值)
    1166-敌兵布阵 线段树(单点增减,区间求和)
    P1078 文化之旅
    P1107 最大整数
    521. [NOIP2010] 引水入城 cogs
    P1137 旅行计划
    P2678 跳石头(二分答案)
  • 原文地址:https://www.cnblogs.com/cxmsky/p/2886940.html
Copyright © 2011-2022 走看看