簡體   English   中英

從InputStream讀取字節塊

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM