我在BufferedStream
上尝试了MemoryStream
:
using (var ms = new MemoryStream(64))
using (var bs = new BufferedStream(ms, 32))
{
var buffer = new byte[] { 0xab, 0xab, 0xab, 0xab };
bs.Write(buffer, 0, buffer.Length);
bs.Flush();
var actual = new byte[4];
int cb = ms.Read(actual, 0, actual.Length);
Console.WriteLine(cb);
}
打印0
。我希望它能打印4
,因为我认为bs.Flush()
会将4
缓冲的字节写入ms
。
我是以某种方式使用BufferedStream
错误还是我的期望完全错了?
答案 0 :(得分:4)
你必须写
ms.Position = 0;
int cb = ms.Read(actual, 0, actual.Length);
非常常见错误在写入后忘记回放MemoryStream()
:-)(假设我每次都这样做:-))