[英]Reading chunks of bytes from an InputStream
在我的應用程序中,我正在通過藍牙接收字節流。 我正在使用DataInputStream
一次從輸入流中讀取固定數量的字節:
private final InputStream mInStream = ...
...
DataInputStream dataInputStream = new DataInputStream(mInStream);
...
while(true) {
... = dataInputStream.readFully(buffer,0,length);
}
我可以通過將mInStream包裝在BufferedInputStream
並將此BufferedInputStream
放入DataInputStream
提高性能嗎? 例如:
private final InputStream mInStream = ...
...
BufferedInputStream buffInStream = new BufferedInputStream(mInStream);
DataInputStream dataInputStream = new DataInputStream(buffInStream);
...
while(true) {
... = dataInputStream.readFully(buffer,0,length);
}
這樣會提高性能嗎? 還是因為我從輸入流中讀取了恆定數量的字節,它會保持不變嗎?
謝謝
我可以通過將mInStream包裝在BufferedInputStream中並將此BufferedInputStream放入DataInputStream中來提高性能嗎?
這取決於您要讀入的緩沖區有多大。 BufferedInputStream
的默認內部緩沖區為8k字節。 如果您自己的緩沖區等於或大於此緩沖區,則沒有任何優勢。 如果緩沖區是128或256字節,幾乎可以肯定是。
... = dataInputStream.readFully(buffer,0,length);
readFully()
不返回值。 僅在確定確實需要這么多字節並且輸入中都應包含所有字節時,才應使用此方法。 如果其余輸入的長度小於'length
則它將拋出EOFException
並且您將丟失所有已部分讀取的數據。 如果不確定要讀取多少數據,則應使用read(byte[])
或read(byte[], int, int).
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.