我需要将一个精确的字节数从InputStream复制到OutputStream。一种方法是一次读取一个字节,并在达到该数字时停止,但性能不是很好。如果我一次使用字节数组缓冲区复制多个字节,则可能会从InputStream中读取大于指定数量的字节数(如果所需数量不能被缓冲区大小整除)。数据量非常大,所以我不能只使用单字节数组缓冲区并将所有数据读入其中。
有没有办法将一定数量的数据从一个流复制到另一个流?
任何帮助将不胜感激!
答案 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);
}