BufferedStream Flush()不写入MemoryStream()?

时间:2017-03-20 10:50:39

标签: c# bufferedstream

我在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错误还是我的期望完全错了?

1 个答案:

答案 0 :(得分:4)

你必须写

ms.Position = 0;
int cb = ms.Read(actual, 0, actual.Length);

非常常见错误在写入后忘记回放MemoryStream() :-)(假设我每次都这样做:-))

相关问题