我尝试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);
}
Run Code Online (Sandbox Code Playgroud)
它打印0。我一直希望它能打印出来,4因为我认为bs.Flush()会将4缓冲的字节写入ms。
我是否以BufferedStream某种方式使用了错误,还是我的期望完全错误?
你必须写
ms.Position = 0;
int cb = ms.Read(actual, 0, actual.Length);
Run Code Online (Sandbox Code Playgroud)
这是一个非常常见的错误,忘了MemoryStream()在写完后倒带a :-) (比方说,我每次都这样做:-))
| 归档时间: |
|
| 查看次数: |
267 次 |
| 最近记录: |