黑马程序员技术交流社区

标题: 毕老师_Java基础视频教程自定义字节流的缓冲区-read和write的特点)视频程序疑问 [打印本页]

作者: 樊其杰    时间: 2013-1-22 18:18
标题: 毕老师_Java基础视频教程自定义字节流的缓冲区-read和write的特点)视频程序疑问
mport java.io.*;

public class MyBufferedInputStream {
        private InputStream in;
        private byte[] buf = new byte[1024];
        private int count;
        private int pos;

        MyBufferedInputStream(InputStream in) {
                this.in = in;
        }

        public int myRead() throws IOException {
                if (count == 0) {
                        count = in.read(buf);
                        if(count<0)
                                return -1;
                        pos = 0;
                        byte b = buf[pos];
                        count--;
                        pos++;
                        return b&255;
                }
                if (count > 0) {
                        byte b = buf[pos];
                        count--;
                        pos++;
                        return b&0xff;
                }
                return -1;
        }

        public void myClose() throws IOException {
                in.close();
        }
}
上面的程序中:if(count==0)才会执行语句块中的语句,怎么里面又有一个if(count<0) ??????
作者: 王少雷    时间: 2013-1-22 19:21
if (count == 0) {//这里的count不是全局的变量么
                        count = in.read(buf);//这里你又重新赋值了啊。根据业务需要,我们当然有不同的判断嘛
                        if(count<0)
                                return -1;
                        pos = 0;
                        byte b = buf[pos];
                        count--;
                        pos++;
                        return b&255;
                }
作者: 高境    时间: 2013-1-22 19:28
{:soso_e179:}
作者: 李敬卫    时间: 2013-1-22 19:38
    if (count == 0) {
                         count = in.read(buf);
                         if(count<0)
                                 return -1;
                         pos = 0;
                         byte b = buf[pos];
                         count--;
                         pos++;
                         return b&255;
                 }对这两个判断语句,判断count==0的目的是:看是否从流中读取了数据,ifcount==0,说明没有读取数据,接下来就要开始读取数据了,通过count = in.read(buf)将读取的字节数赋给count;count<0,是为了防止通过count--使count的值小于0,如果count<0,就return -1;来终止读取,这是我的理解。
作者: 樊其杰    时间: 2013-1-23 09:13
王少雷 发表于 2013-1-22 19:21
if (count == 0) {//这里的count不是全局的变量么
                        count = in.read(buf);//这里你 ...

嗯 ,谢谢,你这样说理解起来比较容易了




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