Java基礎(chǔ)知識(shí)之ByteArrayInputStream流的使用_第1頁(yè)
Java基礎(chǔ)知識(shí)之ByteArrayInputStream流的使用_第2頁(yè)
Java基礎(chǔ)知識(shí)之ByteArrayInputStream流的使用_第3頁(yè)
Java基礎(chǔ)知識(shí)之ByteArrayInputStream流的使用_第4頁(yè)
Java基礎(chǔ)知識(shí)之ByteArrayInputStream流的使用_第5頁(yè)
全文預(yù)覽已結(jié)束

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

第Java基礎(chǔ)知識(shí)之ByteArrayInputStream流的使用目錄JavaByteArrayInputStream流一、ByteArrayInputStream流定義二、ByteArrayInputStream流實(shí)例域三、ByteArrayInputStream流構(gòu)造函數(shù)四、ByteArrayInputStream流方法五、ByteArrayInputStream流的作用六、ByteArrayInputStream的用法解析

JavaByteArrayInputStream流

一、ByteArrayInputStream流定義

API說(shuō)明:ByteArrayInputStream包含一個(gè)內(nèi)部緩沖區(qū),其中包含可以從流中讀取的字節(jié),內(nèi)部計(jì)數(shù)器跟蹤read方法提供的下一個(gè)字節(jié),關(guān)閉ByteArrayInputStream流無(wú)效,關(guān)閉流后調(diào)用類的方法不會(huì)有異常產(chǎn)生

二、ByteArrayInputStream流實(shí)例域

*字節(jié)數(shù)組緩沖區(qū),buf[0]到buf[count-1]是可以從流中讀取的字節(jié),buf[pos]是讀取的下一字節(jié)

protectedbytebuf[];

*讀取字節(jié)的索引

protectedintpos;

*流中當(dāng)前標(biāo)記的位置,默認(rèn)標(biāo)記為0,可以通過(guò)mark方法設(shè)置新的標(biāo)記點(diǎn),而后通過(guò)reset方法將當(dāng)前位置設(shè)置為標(biāo)記點(diǎn)

*從標(biāo)記點(diǎn)開(kāi)始讀取數(shù)據(jù)

*@sinceJDK1.1

protectedintmark=0;

*索引結(jié)束位置+1,不大于緩沖區(qū)的長(zhǎng)度

protectedintcount;

三、ByteArrayInputStream流構(gòu)造函數(shù)

*使用指定字節(jié)數(shù)組創(chuàng)建ByteArrayInputStream流,字節(jié)數(shù)組為流的緩沖區(qū),

*當(dāng)前位置索引pos初始值是0,索引結(jié)束位置count的是buf的長(zhǎng)度

publicByteArrayInputStream(bytebuf[]){

this.buf=buf;

this.pos=0;

this.count=buf.length;

*使用指定的數(shù)組創(chuàng)建ByteArrayInputStream流

*目標(biāo)數(shù)組為流的緩沖區(qū)數(shù)組

*緩沖區(qū)當(dāng)前起始位置變量值為off

*緩沖區(qū)的索引結(jié)束位置為: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():從此輸入流中讀取下一個(gè)字節(jié)并返回,當(dāng)流到達(dá)末尾時(shí),返回-1

*從此輸入流中讀取下一個(gè)字節(jié)并返回

*當(dāng)流到達(dá)末尾時(shí),返回-1

*注意0xff是字節(jié)的補(bǔ)碼操作,暫時(shí)不用理會(huì)

publicsynchronizedintread(){

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

}

2)read(byteb[],intoff,intlen):從輸入流中讀取最多l(xiāng)en個(gè)字節(jié)到目標(biāo)數(shù)組中,返回實(shí)際讀取的字節(jié)數(shù)

*從輸入流中讀取最多l(xiāng)en個(gè)字節(jié)到目標(biāo)數(shù)組中,返回實(shí)際讀取的字節(jié)數(shù)

*當(dāng)緩沖區(qū)中剩余字符數(shù)小于len個(gè)字節(jié)時(shí),讀取緩沖區(qū)剩余字符數(shù)

*當(dāng)剩余字符數(shù)大于len個(gè)字節(jié)時(shí),讀取len個(gè)字節(jié)

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():關(guān)閉流無(wú)效,關(guān)閉后調(diào)用其它方法不會(huì)有異常

*關(guān)閉流無(wú)效,關(guān)閉后調(diào)用其它方法不會(huì)有異常

publicvoidclose()throwsIOException{

}

五、ByteArrayInputStream流的作用

暫時(shí)不理解具體作用,不清楚什么時(shí)候會(huì)用到該流,因?yàn)閷?shí)際項(xiàng)目暫未用到,故先了解其功能即可

六、ByteArrayInputStream的用法解析

看下面這個(gè)程序,看懂了就會(huì)了

importjava.io.ByteArrayInputStream;

importjava.io.File;

importjava.io.IOException;

publicclassTest4{

//ByteArrayInputStream本身操作的是一個(gè)數(shù)組,并沒(méi)有打開(kāi)文件描述之類的,所有不需要關(guān)閉流

publicstaticvoidmain(String[]args){

ByteArrayInputStreambais=null;

StringBuildersb=newStringBuilder();

inttemp=0;

intnum=0;

longdate1=System.currentTimeMillis();

try{

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

//從字符數(shù)組b中讀取數(shù)據(jù),從下標(biāo)為2開(kāi)始計(jì)數(shù)讀8個(gè)

bais=newByteArrayInputStream(b,2,8);

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

sb.append((char)temp);

num++;

System.out.println(sb);

System.out.println("讀取的字節(jié)數(shù):"+num);

}finally{

try{

bais.close();//不需要關(guān)閉流的,但是調(diào)用close沒(méi)有任何影響,close不做任何事情

}catch(IOExceptione){

e.printStackTrace();

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

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論