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

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 新新人类嘿嘿嘿 中级黑马   /  2014-9-7 22:53  /  744 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

看完视频,模仿毕老师定义了一个自定义缓冲字节流,但总是文件复制不了,大神们帮看看哪出问题了啊?
自定义类代码如下:
public class MyBufferInputStream {
       
        private InputStream inputStream;
       
        public MyBufferInputStream(InputStream inputStream){
               
                this.inputStream=inputStream;
        }
       
       
        private int pos=0,count=0;
       
        private byte[] buf=new byte[1024*4];
        public int myRead() throws IOException{
               
                count=inputStream.read(buf);
                if (count==0) {
                        byte b=buf[pos];
                        if (count<0) {
                        return -1;
                   }
                        pos++;
                       
                        count--;
                       
                        return b&255;
                       
                }else if (count>0) {
                        byte b=buf[pos];
               
                        pos++;
                       
                        count--;
                       
                        return b&255;
                }
          
               
               
                return -1;
        }

        public void myClose() throws IOException{
               
               
                inputStream.close();
        }
}


测试类代码:
FileInputStream inputStream=new FileInputStream("e:\\99.jpg");
               
                MyBufferInputStream bf=new MyBufferInputStream(inputStream);
               
                FileOutputStream outputStream=new FileOutputStream("e:\\00.jpg");
                BufferedOutputStream of=new BufferedOutputStream(outputStream);
               
       
               
                int ch;
                while ((ch=bf.myRead())!=-1) {
                        of.write(ch);
                }
                of.close();
                bf.myClose();
               

1 个回复

倒序浏览
把count=inputStream.read(buf);定义到 if (count==0) 代码块里面,不然每调用一次myRead(),取一个元素,就又重新读一组数组
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马