A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

import java.io.*;

class MyBufferedInputStream
{
        private InputStream in;
        private int count=0;
        private int pos=0;
        private byte[] by = new byte[1024];
        MyBufferedInputStream(InputStream in)
        {
                this.in=in;
        }
        public int myBufferedRead()throws IOException
        {
               
                if(count==0)
                {
                        count=in.read(by);
                        if(count<0)
                             return -1;
                        pos=0;
                        byte b= by[pos];
                        pos++;
                        count--;
                        return b&255;
                }
                else if(count<0)
                        return -1;
                else if(count>0)
                {
                        byte b= by[pos];
                        pos++;
                        count--;
                        return b&0xff;
                }
                return -1;
        }
        public void myclose()throws IOException
        {
                in.close();
        }
}

public class MyStringBufferDemo
{
        public static void main(String[] args)throws IOException
        {
                MyBufferedInputStream mbs = new MyBufferedInputStream(new FileInputStream("xuexi.jpg"));
                BufferedOutputStream bos = new BufferedOutputStream(new FileOutputStream("xuexi2.jpg"));
               
                int num =0;
                while((num=mbs.myBufferedRead())!=-1)
                {
                        bos.write(num);
                }
                mbs.myclose();
                bos.close();
        }
}

毕老师的视频中是将count<0的情况放到了if的里面,用这个方法在我的电脑上虽然复制完数据没有丢失,但是不能正常播放,当把代码改到红色区域,在运行,就可以用了,求解释?

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马