2016-08-22 64 views
0

我需要從InputStream複製確切數量的字節到OutputStream。一種方法是一次讀取一個字節,當達到數字時停止,但性能不是很好。如果我一次使用一個字節數組緩衝區來複制多個字節,則可能會從InputStream讀取大量字節而不是確切的指定數量(如果所需的數量不能被緩衝區大小整除)。數據量非常大,所以我不能只使用單個字節的數組緩衝區並將所有數據讀入它。Android字節流使用緩衝區複製確切的字節數

有沒有辦法將一個數據流中的確切數據量有效地複製到另一個數據流?

任何幫助,將不勝感激!

回答

1

這應該工作

int bytesToRead = .... 
byte [] b = new byte[1024]; 
while (bytesToRead > 0) 
{ 
    int read = is.read(b, 0, Math.min(bytesToRead, 1024)); 
    if (read < 0) 
     break; 
    bytesToRead -= read; 
    os.write(b, 0, read); 
}