Android字节流使用缓冲区复制确切的字节数

时间:2016-08-22 03:41:10

标签: android stream buffer

我需要将一个精确的字节数从InputStream复制到OutputStream。一种方法是一次读取一个字节,并在达到该数字时停止,但性能不是很好。如果我一次使用字节数组缓冲区复制多个字节,则可能会从InputStream中读取大于指定数量的字节数(如果所需数量不能被缓冲区大小整除)。数据量非常大,所以我不能只使用单字节数组缓冲区并将所有数据读入其中。

有没有办法将一定数量的数据从一个流复制到另一个流?

任何帮助将不胜感激!

1 个答案:

答案 0 :(得分: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);
}