繁体   English   中英

无法使用BinaryWriter写入MemoryStream

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM