BufferedStream Flush() 不写入 MemoryStream()?



我正在尝试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()后忘记倒带:-((假设我每次都这样做:-( (

相关内容

  • 没有找到相关文章

最新更新