c# - BufferedStream Flush() 不写入 MemoryStream()?

标签 c# bufferedstream

我正在通过 MemoryStream 尝试 BufferedStream:

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()后忘记倒回它:-)(假设我每次都会这样做:-))

关于c# - BufferedStream Flush() 不写入 MemoryStream()?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42901676/

相关文章:

.net - Finalize 方法如何调用 Stream.Dispose(bool)?

c# - Entity Framework 和函数导入的错误消息

c# - 在两个不同mysql数据库的两个表之间复制大量行

c# - 访问公共(public)保管箱文件夹中的所有保管箱图像

c# - 业务类无法引用 HTTPContext

c# - 如何使用 C# 使用 json 数据创建 excel 文件?

c# - FileStream 及其缓冲策略

c# - 为什么 BufferedStream.Write 会抛出 "This stream does not support seek operations"?