【问题标题】:Android byte stream copy exact number of bytes using bufferAndroid字节流使用缓冲区复制确切的字节数
【发布时间】:2016-08-22 03:41:09
【问题描述】:
我需要将确切数量的字节从 InputStream 复制到 OutputStream。一种方法是一次读取一个字节并在达到数字时停止,但性能不是很好。如果我使用字节数组缓冲区一次复制多个字节,则从 InputStream 中读取的字节数可能会超过确切指定的数量(如果所需的数量不能被缓冲区大小整除)。数据量非常大,所以我不能只使用单字节数组缓冲区并将所有数据读入其中。
有没有办法有效地将准确数量的数据从一个流复制到另一个流?
任何帮助将不胜感激!
【问题讨论】:
标签:
android
stream
buffer
【解决方案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);
}