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

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

老師這里創建字節數組循環讀取大文件是不是有bug呢?

http://img1.sycdn.imooc.com//578d838c0001c01212800720.jpg


我查了下api中這里read的返回值為:讀入緩沖區的字節總數,如果因為已經到達文件末尾而沒有更多的數據,則返回 -1。

那么如果我有一個數組一次性讀不完的文件,比如需要兩次讀完,那么第一次讀完后bytes返回值為1024,然后再while()循環里面打印輸出。第二次讀完了,并且返回了-1,此時雖然文件讀入了數組,但是bytes=-1,不滿足循環條件,循環里面就沒執行,就沒有打印輸出?。?/p>

? 是這樣的嗎?還是我理解錯了,希望我有把疑惑說清楚。。。

正在回答

4 回答

不知道。。。

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

charsandrew 提問者

我弄明白了,具體看我在樓下的回復。。。
2016-07-19 回復 有任何疑惑可以回復我~

厲害~~~

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

然后我寫代碼去試驗了一下,結果是全部都能輸出到控制臺。然后我就去看read()的源代碼了,發現api中的解釋有點誤導人。實際情況是,在讀第二次的476個字節時,如果讀到文件結束,下一個字節為空,會先返回476,然后再次讀取,這次直接返回-1。

看下read()的源代碼就很清楚了,源碼其實寫的很簡單。

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

哈哈,這個問題還是我自己來解答吧。

我之前的疑問是:比如我要讀取一個1500字節的文件,并把它輸出到控制臺,我定義一個1024字節數組來緩存讀取,第一次讀1024個字節,返回的是1024;然后將1024字節輸出到控制臺。然后循環讀取,再讀剩下的476個字節,因為讀完了,返回的是-1,雖然將476個字節讀進了數組,但不滿足while的執行條件,所以剩下的476個字節是不會輸出到控制臺的。

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

舉報

0/150
提交
取消

老師這里創建字節數組循環讀取大文件是不是有bug呢?

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

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

幫助反饋 APP下載

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

公眾號

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