黑马程序员技术交流社区
标题:
关于字节流自定义MyRead方法
[打印本页]
作者:
a3330682
时间:
2014-4-27 12:44
标题:
关于字节流自定义MyRead方法
本帖最后由 a3330682 于 2014-4-27 14:58 编辑
class MyBufferedInputStream
{
private InputStream in;
private byte[] buf = new byte[1024*4];
private int pos = 0,count = 0;
MyBufferedInputStream(InputStream in)
{
this.in = in;
}
//一次读一个字节,从缓冲区(字节数组)获取。
public int myRead()throws IOException
{
//通过in对象读取硬盘上数据,并存储buf中。
if(count==0)
{
count = in.read(buf);
if(count<0)
return -1;
pos = 0;
byte b = buf[pos];
count--;
pos++;
return b&255;
}
else if(count>0)
{
byte b = buf[pos];
count--;
pos++;
return b&0xff;
}
return -1;
}
public void myClose()throws IOException
{
in.close();
}
为什么return b的时后要&255和0xff呢?
}
作者:
wconho
时间:
2014-4-27 14:37
防止字节数组中有255.例如:字节数组数据为[10,54,14,255,45,14].当读到255时,调用MyRead()会返回-1,提前结束对字节数组的读取。&255和0xff:二进制位:00000000 00000000 00000000 11111111,这个二进制跟字节数组里的255进行& 时,不会得到-1,是原数据:255
欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/)
黑马程序员IT技术论坛 X3.2