我想知道为什么在许多示例中,字节数组会被分块读入流中,而不是一次性全部读取...我知道这是一个含糊的问题,但我很感兴趣。
我对硬件有一些了解,填充缓冲区可能非常依赖大小,你不希望再写入缓冲区之前它已经被刷新到需要去的地方等等...但在 .Net 平台(和其他现代语言)中,我看到了两者的示例。那么何时使用哪种方法,或者第二个绝对不行?
以下是我所说的代码:
我相信两者都是合法的,所以为什么要费尽周折使用while循环(无论你决定如何结构化它)?
我在这里充当魔鬼的代言人,因为我想尽可能地学习 :)
我对硬件有一些了解,填充缓冲区可能非常依赖大小,你不希望再写入缓冲区之前它已经被刷新到需要去的地方等等...但在 .Net 平台(和其他现代语言)中,我看到了两者的示例。那么何时使用哪种方法,或者第二个绝对不行?
以下是我所说的代码:
var buffer = new byte[4096];
while (true)
{
var read = this.InputStream.Read(buffer, 0, buffer.Length);
if (read == 0)
break;
OutputStream.Write(buffer, 0, read);
}
而不是:
var buffer = new byte[InputStream.Length];
var read = this.InputStream.Read(buffer, 0, buffer.Length);
OutputStream.Write(buffer, 0, read);
我相信两者都是合法的,所以为什么要费尽周折使用while循环(无论你决定如何结构化它)?
我在这里充当魔鬼的代言人,因为我想尽可能地学习 :)