Tag: meta

为什么要以块的forms写入Stream?

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