我正在尝试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
错误,或者我的期望只是错误?
你必须写
ms.Position = 0;
int cb = ms.Read(actual, 0, actual.Length);
这是一个非常常见的错误,在写入MemoryStream()
后忘记倒带:-((假设我每次都这样做:-( (