黑马程序员技术交流社区
标题:
毕老师_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