黑马程序员技术交流社区
标题:
不懂就要问···《已经解决~我犯2了》
[打印本页]
作者:
攻城狮
时间:
2012-5-10 00:23
标题:
不懂就要问···《已经解决~我犯2了》
本帖最后由 李南江 于 2012-5-10 00:44 编辑
自定义字节流缓冲区~看了几遍了还是有一步不是很明白 求详解
class myBufferedInputStream{
private InputStream in;
private int pos = 0,count =0;
private byte[] by = new byte[1024];
myBufferedInputStream(InputStream in){
this.in=in;
}
public int myRead() throws Exception{
if(count==0){
count = in.read(by);
if(count<0)//一直读不懂这里什么情况count会小于0,感觉应该只能等于0
{
return -1;
}
pos=0;
byte b = by[pos];
count--;
pos++;
return b&255;
}
else if(count>0){
byte b = by[pos];
count--;
pos++;
return b&255;
}
return -1;
}
}
作者:
何阳
时间:
2012-5-10 00:34
if(count==0){
count = in.read(by);
if(count<0)//一直读不懂这里什么情况count会小于0,感觉应该只能等于0
{
return -1;
}
count代表返回存入数组的个数,调用了底层的读入动作,并不是装饰类自己的读的动作,而是父类的read
当一个文件读到结束时,操作系统会有一个标记,当读到这个标记时,就不在读了,返回当前读取的个数,
下次循环时,直接返回系统的结束标记,这个通过JVM返回的就是-1。所以是小于0。
作者:
邱俊杰
时间:
2012-5-10 00:36
public int myRead() throws Exception{
if(count==0){
count = in.read(by);
//这里的count有个数了,不是0了,获取到了byte字节流,当小于0的时候表示数据取完了,
if(count<0)//一直读不懂这里什么情况count会小于0,感觉应该只能等于0
{
return -1;
}
pos=0;
byte b = by[pos];
count--;
pos++;
return b;
}
作者:
攻城狮
时间:
2012-5-10 00:39
已经解决 请无视此贴··看了一天视频 估计脑袋有点晕了 想错了···read方法独到末尾返回-1~~所有count等于-1 我真的晕了·
作者:
攻城狮
时间:
2012-5-10 00:43
read
public int read()从此输入流中读取下一个数据字节。返回一个 0 到 255 范围内的 int 字节值。如果因为到达流末尾而没有可用的字节,则返回值 -1。
此 read 方法不会阻塞。
睡觉之···今天不适合再看了··谢谢大家热心帮忙 论坛就应该互助
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2