我想知道为什么这么多示例将字节数组读入卡盘中的流中,而不是一次全部读入......我知道这是一个软问题,但我很感兴趣。
我了解一些关于硬件和填充缓冲区的信息可能非常依赖于大小,并且您不想再次写入缓冲区,直到它被刷新到它需要去的任何地方等等......但是使用.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 循环的所有大惊小怪(无论您决定如何构建它)?
我在这里扮演魔鬼倡导者,因为我想尽可能多地学习:)