BufferedStream Flush() 不写入 MemoryStream()?
BufferedStream Flush() doesn't write to 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()
后忘记倒带 :-)(假设我每次都这样做 :-))
我正在尝试 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()
后忘记倒带 :-)(假设我每次都这样做 :-))