[英]Cannot write to MemoryStream using BinaryWriter
我试过这段代码:
byte[] someData = new byte[] { 1, 2, 3, 4 };
MemoryStream stream = new MemoryStream(someData, 1, someData.Length - 1, true);
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(1);
}
stream.Dispose();
每次运行时,都会抛出NotSupportedException,告诉我无法写入流。 为什么会这样? 第2行中显示的初始化的最后一个参数显然是正确的,所以我应该能够写入流。 如果我没有指定起始索引和计数,它可以工作。
为什么会这样?
始终(几乎总是)在构造函数中创建没有参数的内存流:
using (MemoryStream stream = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(1);
}
stream.Flush();
byte[] bytes = stream.GetBuffer();
//use it
}
这段代码工作正常
来自MSDN :
基于字节数组的指定区域初始化MemoryStream类的新的不可调整大小的实例,并将CanWrite属性设置为指定的。
BinaryWriter
开始在流的末尾写入,因此需要调整它以便能够写入,但这是不允许的。 您只能写入已分配的流的字节。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.