FileInputStream的read()方法為什麼不用byte接收的原因

問題:FileInputStream的read()方法每次讀取一次就返回的是一個字節,為什麼不用byte接收,而是用int接收呢?

解釋:因為字節輸入流可以操作任意類型的文件,比如圖片音頻等,這些文件底層都是以二進制的形式存儲,如果每次讀取返回byte,有可能在讀到中間的時候遇到11111111,那麼這11111111是byte類型的-1,程序遇到-1就會停止運行了,後面的數據讀不到了。所以在讀取數據的時候用int類型接收,如果遇到11111111,則會愛其前面補上24個0湊足4個字節,那麼byte類型的-1變成了int類型的255了,這樣保證整個數據讀完,而結果標誌為-1就是int類型。


分享到:


相關文章: