用以下代码来说明
import java.io.IOException;
import java.io.InputStream;
/**
* 本类是自定义一个字节流缓冲区
*
*/
public class MyBufferedInputStream {
private InputStream in;
int pos=0,count=0;
byte[] buf=new byte[1024];
public 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;//将byte类型提升为int类型,&上255就是保证最低8位保证不变
}
if(count>0){
byte b=buf[pos];
count--;
pos++;
return b&255;
}
return -1;
}
}
在上面的返回数据b中,将类型自动提升int类型,返回数据需要&上255,既保持了byte数据的最低8不变,保证了数据的有效性,同时也保证了,不会连续出现8个1的情况,是read方法不会再没有读完数据之前返回-1的情况发生。 |
|