Java基础知识之ByteArrayInputStream流的使用_第1页
Java基础知识之ByteArrayInputStream流的使用_第2页
Java基础知识之ByteArrayInputStream流的使用_第3页
Java基础知识之ByteArrayInputStream流的使用_第4页
Java基础知识之ByteArrayInputStream流的使用_第5页
全文预览已结束

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

第Java基础知识之ByteArrayInputStream流的使用目录JavaByteArrayInputStream流一、ByteArrayInputStream流定义二、ByteArrayInputStream流实例域三、ByteArrayInputStream流构造函数四、ByteArrayInputStream流方法五、ByteArrayInputStream流的作用六、ByteArrayInputStream的用法解析

JavaByteArrayInputStream流

一、ByteArrayInputStream流定义

API说明:ByteArrayInputStream包含一个内部缓冲区,其中包含可以从流中读取的字节,内部计数器跟踪read方法提供的下一个字节,关闭ByteArrayInputStream流无效,关闭流后调用类的方法不会有异常产生

二、ByteArrayInputStream流实例域

*字节数组缓冲区,buf[0]到buf[count-1]是可以从流中读取的字节,buf[pos]是读取的下一字节

protectedbytebuf[];

*读取字节的索引

protectedintpos;

*流中当前标记的位置,默认标记为0,可以通过mark方法设置新的标记点,而后通过reset方法将当前位置设置为标记点

*从标记点开始读取数据

*@sinceJDK1.1

protectedintmark=0;

*索引结束位置+1,不大于缓冲区的长度

protectedintcount;

三、ByteArrayInputStream流构造函数

*使用指定字节数组创建ByteArrayInputStream流,字节数组为流的缓冲区,

*当前位置索引pos初始值是0,索引结束位置count的是buf的长度

publicByteArrayInputStream(bytebuf[]){

this.buf=buf;

this.pos=0;

this.count=buf.length;

*使用指定的数组创建ByteArrayInputStream流

*目标数组为流的缓冲区数组

*缓冲区当前起始位置变量值为off

*缓冲区的索引结束位置为:buf.length和off+length的最小值

publicByteArrayInputStream(bytebuf[],intoffset,intlength){

this.buf=buf;

this.pos=offset;

this.count=Math.min(offset+length,buf.length);

this.mark=offset;

}

四、ByteArrayInputStream流方法

1)read():从此输入流中读取下一个字节并返回,当流到达末尾时,返回-1

*从此输入流中读取下一个字节并返回

*当流到达末尾时,返回-1

*注意0xff是字节的补码操作,暂时不用理会

publicsynchronizedintread(){

return(poscount)(buf[pos++]0xff):-1;

}

2)read(byteb[],intoff,intlen):从输入流中读取最多len个字节到目标数组中,返回实际读取的字节数

*从输入流中读取最多len个字节到目标数组中,返回实际读取的字节数

*当缓冲区中剩余字符数小于len个字节时,读取缓冲区剩余字符数

*当剩余字符数大于len个字节时,读取len个字节

publicsynchronizedintread(byteb[],intoff,intlen){

if(b==null){

thrownewNullPointerException();

}elseif(off0||len0||lenb.length-off){

thrownewIndexOutOfBoundsException();

if(pos=count){

return-1;

intavail=count-pos;

if(lenavail){

len=avail;

if(len=0){

return0;

System.arraycopy(buf,pos,b,off,len);

pos+=len;

returnlen;

}

3)close():关闭流无效,关闭后调用其它方法不会有异常

*关闭流无效,关闭后调用其它方法不会有异常

publicvoidclose()throwsIOException{

}

五、ByteArrayInputStream流的作用

暂时不理解具体作用,不清楚什么时候会用到该流,因为实际项目暂未用到,故先了解其功能即可

六、ByteArrayInputStream的用法解析

看下面这个程序,看懂了就会了

importjava.io.ByteArrayInputStream;

importjava.io.File;

importjava.io.IOException;

publicclassTest4{

//ByteArrayInputStream本身操作的是一个数组,并没有打开文件描述之类的,所有不需要关闭流

publicstaticvoidmain(String[]args){

ByteArrayInputStreambais=null;

StringBuildersb=newStringBuilder();

inttemp=0;

intnum=0;

longdate1=System.currentTimeMillis();

try{

byte[]b="abcdefghijklmnopqstuvxyz".getBytes();

//从字符数组b中读取数据,从下标为2开始计数读8个

bais=newByteArrayInputStream(b,2,8);

while((temp=bais.read())!=-1){

sb.append((char)temp);

num++;

System.out.println(sb);

System.out.println("读取的字节数:"+num);

}finally{

try{

bais.close();//不需要关闭流的,但是调用close没有任何影响,close不做任何事情

}catch(IOExceptione){

e.printStackTrace();

newFile("d:"+File.separator+"a.txt");//File.s

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论