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

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

read(byte[] b,int off,int len)的返回值

老師的while((bytes=in.read(buf,0,buf.length))!=-1)這里應該有點問題,這時候read()返回的應該是所讀的字節數,是不是設置bytes++<=buf.length

正在回答

3 回答

read返回的確實是字節數,但是讀到文件尾時就返回-1。

所以如果文件沒有被讀完,則返回讀取長度而不是-1,while繼續執行,循環利用buf。

如果文件被讀完,則返回-1,while循環結束。

-----------------------------------------------

如果按你說的bytes++<=buf.length,那讀到文件尾時返回-1也小于buf.length,那循環還繼續做不就錯了^_^

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

read

public int read(byte[]?b)
? ? ? ? throws IOException

從此輸入流中將最多 b.length 個字節的數據讀入一個 byte 數組中。在某些輸入可用之前,此方法將阻塞。


覆蓋:

類 InputStream 中的 read

參數:

b - 存儲讀取數據的緩沖區。

返回:

讀入緩沖區的字節總數,如果因為已經到達文件末尾而沒有更多的數據,則返回 -1。

拋出:

IOException - 如果發生 I/O 錯誤。

另請參見:

InputStream.read(byte[], int, int)


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

weibo_肖邦在對我微笑_0

發錯了,其實想發的是read public int read(byte[] b, int off, int len) throws IOException 這個方法 其實都沒關系,你看函數返回后面那一段,如果因為已經到達文件末尾而沒有更多的數據,則返回 -1。 就知道老師這樣寫是什么意思了
2016-12-16 回復 有任何疑惑可以回復我~
#2

weibo_肖邦在對我微笑_0 回復 weibo_肖邦在對我微笑_0

而且如果按照你的想法 bytes++<=buf.length 循環一直會運行到bytes等于byte[] buf[]定義時的長度。 這是我的理解,具體會不會運行到我沒試過。
2016-12-16 回復 有任何疑惑可以回復我~

舉報

0/150
提交
取消

read(byte[] b,int off,int len)的返回值

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

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

幫助反饋 APP下載

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

公眾號

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