我尝试过以下代码:
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行所示的初始化的最后一个参数显然是真的,所以我应该能够写入流。如果我不指定起始索引和计数,它就会起作用。
这一切为什么要发生?
发布于 2012-01-30 07:43:24
From MSDN
基于字节数组的指定区域初始化MemoryStream类的新的不可调整大小的实例,并按指定的方式设置CanWrite属性。
BinaryWriter在流的末尾开始写入,因此它需要调整它的大小才能写入,但这是不允许的。您只能写入流中已分配的字节。
发布于 2012-01-30 07:41:21
总是(几乎总是)在构造函数中创建不带参数的内存流:
using (MemoryStream stream = new MemoryStream())
{
using (BinaryWriter writer = new BinaryWriter(stream))
{
writer.Write(1);
}
stream.Flush();
byte[] bytes = stream.GetBuffer();
//use it
}这段代码运行良好
https://stackoverflow.com/questions/9057798
复制相似问题