首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >无法使用BinaryWriter写入MemoryStream

无法使用BinaryWriter写入MemoryStream
EN

Stack Overflow用户
提问于 2012-01-30 07:36:22
回答 2查看 11.9K关注 0票数 3

我尝试过以下代码:

代码语言:javascript
复制
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行所示的初始化的最后一个参数显然是真的,所以我应该能够写入流。如果我不指定起始索引和计数,它就会起作用。

这一切为什么要发生?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-01-30 07:43:24

From MSDN

基于字节数组的指定区域初始化MemoryStream类的新的不可调整大小的实例,并按指定的方式设置CanWrite属性。

BinaryWriter在流的末尾开始写入,因此它需要调整它的大小才能写入,但这是不允许的。您只能写入流中已分配的字节。

票数 4
EN

Stack Overflow用户

发布于 2012-01-30 07:41:21

总是(几乎总是)在构造函数中创建不带参数的内存流:

代码语言:javascript
复制
 using (MemoryStream stream = new MemoryStream())
        {
            using (BinaryWriter writer = new BinaryWriter(stream))
            {
                writer.Write(1);
            }
            stream.Flush();
            byte[] bytes = stream.GetBuffer();
            //use it
        }

这段代码运行良好

票数 11
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/9057798

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档