2016-08-22 32 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); 
}