相关疑难解决方法(0)

写入然后从MemoryStream中读取

我正在使用DataContractJsonSerializer,它喜欢输出到Stream.我想要对串行器的输出进行顶部和尾部处理,因此我使用StreamWriter交替写入我需要的额外位.

var ser = new DataContractJsonSerializer(typeof (TValue));

using (var stream = new MemoryStream())
{   
    using (var sw = new StreamWriter(stream))
    {
        sw.Write("{");

        foreach (var kvp in keysAndValues)
        {
            sw.Write("'{0}':", kvp.Key);
            ser.WriteObject(stream, kvp.Value);
        }

        sw.Write("}");
    }

    using (var streamReader = new StreamReader(stream))
    {
        return streamReader.ReadToEnd();
    }
}
Run Code Online (Sandbox Code Playgroud)

当我这样做时,我得到一个ArgumentException"流不可读".

我可能在这里做错了所以所有答案都欢迎.谢谢.

c#

60
推荐指数
3
解决办法
8万
查看次数

MemoryStream.TryGetBuffer什么时候会返回一个有用的ArraySegment?

bool MemoryStream.TryGetBuffer(out ArraySegment<byte> buffer)是.NET 4.6中的一个新API,可用于访问存储在MemoryStream中的有效字节,而无需复制它们.这非常令人兴奋!它返回一个bool,如果转换成功则为"true;否则为false"并填充out参数.

什么时候返回true,表示out ArraySegment<byte> buffer现在包含有效信息?今天没有记录.

我知道如果它返回false,我可以.ToArray()用来获取字节的副本.并且,我们已经拥有.GetBuffer(),但有时MemoryStreams是在缓冲区中创建的,并且这些信息很难(好吧,等等)以后再使用,更不用说try ... catch稳健性所需了.

.net memorystream

11
推荐指数
1
解决办法
1301
查看次数

标签 统计

.net ×1

c# ×1

memorystream ×1