A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 小川行 中级黑马   /  2015-3-22 01:07  /  817 人查看  /  0 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

用以下代码来说明
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的情况发生。

0 个回复

您需要登录后才可以回帖 登录 | 加入黑马