給你看些**!你就明白是怎麼回事了!其實內部有進行判斷,但是並沒有進行處理!
而是直接丟擲了異常!一下是jdk 的源**:
public void readfully(byte b, int off, int len, boolean copy)throws ioexception
off += n;
len -= n;
}}
從這裡不難看出!這裡對異常並沒有處理!而是直接丟擲異常!
這裡還要注意的乙個問題就是其實 readfully和read的區別。
readfully方法並不是說一下就把整個檔案讀完了,不用去管是否到達檔案末尾的異常。
readfully只是在讀取資料的時候,會一直把緩衝區讀滿,否則一直處於阻塞狀態而等待讀取。
而read方法只是將位元組流中的資料讀完。那麼資料在tcp協議傳送的過程中,可能輸入流接受到的資料並不完全,只是其中的一部分。而如果這時候的緩衝區沒有滿的話,readfully將會繼續等待。知道緩衝區裝滿。
某些時候!你可能需要讀出特定的長度的字段。比如一些資料的頭資訊之類的!
這時候如果你用read去讀,那麼可能還沒有讀完就個你返回來了。
但是如果去用readfully讀,那麼就會完整的給你讀出來。
但是在更多的時候,如果不是確定要用特定長度的資料。還是用read去讀。
用readfully有點危險。
read和readFully的區別!
給你看些 你就明白是怎麼回事了!其實內部有進行判斷,但是並沒有進行處理!而是直接丟擲了異常!一下是jdk 的源 public void readfully byte b,int off,int len,boolean copy throws ioexception off n len n 從這裡不難...
MMAP和read的區別
mmap操作提供了一種機制,讓使用者程式直接訪問裝置記憶體,這種機制,相比較在使用者空間和核心空間互相拷貝資料,效率更高。在要求高效能的應用中比較常用。mmap對映記憶體必須是頁面大小的整數倍,面向流的裝置不能進行mmap,mmap的實現和硬體有關。mmap 系統呼叫使得程序之間通過對映同乙個普通檔...
fread 和 read函式的區別
1,fread是帶緩衝的,read不帶緩衝.2,fopen是標準c裡定義的,open是posix中定義的.3,fread可以讀乙個結構.read在linux unix中讀二進位制與普通檔案沒有區別.4,fopen不能指定要建立檔案的許可權.open可以指定許可權.5,fopen返回指標,open返回...