close
常常我們需要從InputStream這些串流(stream)裡面讀取位元陣列,這時候常常想到的方法都是
InputStream.read()這方法
不過這個方法只能一次讀1一個byte有損效率
所以通常都會使用個緩衝區(buffer)來一次存取多個位元資料
InputStream.read(buffer)
但是這時候又會遇到檔案已經到尾了可是還不夠buffer大小,因此常常最後一次讀會添加不必要的資料結果出錯
因此在讀取的時候要把InputStream.read(buffer) 回傳的int值記錄下來,那個數值是代表你讀取了多少長度的資料
這樣你就只要讀取buffer裡面的0~length的數值就好
以上是題外話
下面才是正題,當我們讀進bytes 該放到哪裡好呢,其實有很多種方法以下是其中一種方法! 參考看看吧!
InputStream is = new FileInputStream("test");
//暫存BYTE陣列
ByteArrayOutputStream baos = new ByteArrayOutputStream();
//緩衝
byte buffer[] = new byte[512];
//紀錄讀進來長度
int length = 0;
//假如等於-1代表沒有資料了
while( (length = is.read(buffer)) != -1){
//從緩衝區讀取buffer裡面0~length-1的位置
baos.write(buffer, 0, length);
}
//ByteArrayOutputStream轉成位元陣列
byte data [] = baos.toByteArray();
is.close();
baos.close();
上面的data就是test檔裡面的所有資料嚕,希望對大家有幫助!
全站熱搜