黑马程序员技术交流社区

标题: 自定义缓冲字节流的问题 [打印本页]

作者: 新新人类嘿嘿嘿    时间: 2014-9-7 22:53
标题: 自定义缓冲字节流的问题
看完视频,模仿毕老师定义了一个自定义缓冲字节流,但总是文件复制不了,大神们帮看看哪出问题了啊?
自定义类代码如下:
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();
               
作者: 付江涛    时间: 2014-9-7 23:12
把count=inputStream.read(buf);定义到 if (count==0) 代码块里面,不然每调用一次myRead(),取一个元素,就又重新读一组数组




欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) 黑马程序员IT技术论坛 X3.2