亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定

關于while((b=in.read(by,0,by.length))!=-1),這個這的返回值是怎么回事?

如果說in.read(by.0.by.;ength)讀滿之后返回的是-1;那么在上一個例子中的int bytes的值最后不就是-1了嗎

public void putByByteArrays(File file) throws IOException{

long start=System.currentTimeMillis();

FileInputStream in=new FileInputStream(file);

byte[] by=new byte[8*1024];

int bytes=in.read(by,0,by.length);

這里的bytes為什么不是-1?難道還沒有讀取完嗎?

for (int i=0;i<bytes;) {

if((by[i]&0xff)<=0xf){

System.out.print("0");

}

System.out.print(Integer.toHexString(by[i]&0xff)+" ");

if(++i%10==0){

System.out.println();

}

}

in.close();

long end=System.currentTimeMillis();

System.out.println("時間:"+(end-start));

}


正在回答

4 回答

讀完了就返回 -1。

0 回復 有任何疑惑可以回復我~

out.write(buf,0,b);

將長度為b(其中b = in.read(buf, 0, buf.length))的字節從字節數組buf的第0個位置開始寫入到流


0 回復 有任何疑惑可以回復我~

int bytes=in.read(by,0,by.length) 返回的是長度。

while((b=in.read(by,0,by.length))!=-1)循環讀取,? 第一次直接讀完了,返回了長度, 打印。 再循環讀,返回-1

1 回復 有任何疑惑可以回復我~
#1

慕工程2957023 提問者

感謝;如果是這樣,感覺老師的while循環就沒有什么意義,直接 byte[] by=new byte[20*1024]; int b; b=in.read(by,0,by.length); out.write(by,0,b); System.out.println("b的值"+b); out.flush(); in.close();out.close(); 直接這樣就好了,執行結果一樣,為什么還要加個while循環啊
2016-06-29 回復 有任何疑惑可以回復我~
#2

染紅_街道 回復 慕工程2957023 提問者

如果文件特別大你一次讀不完呢,這就是例如每次讀取100個字節,然后寫入,再讀100個字節
2016-07-03 回復 有任何疑惑可以回復我~

int b;

while((b=in.read(by,0,by.length))!=-1){

out.write(by,0,b);

System.out.println(b);

out.flush();

}

System.out.println("的值"+b)//;這里b的值確實是-1;

可是上一個例子中bytes為什么不是-1?


1 回復 有任何疑惑可以回復我~
#1

染紅_街道

那句話我感覺有問題 不過b的值一直在增加,最后讀到文件結尾就變成了-1,所以最后一次打印b為 -1 至于 out.write(buf, 0, b) 我感覺不太對,0 b 分別代表什么意思呢,
2016-07-03 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

關于while((b=in.read(by,0,by.length))!=-1),這個這的返回值是怎么回事?

我要回答 關注問題
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號