相关疑难解决方法(0)

为什么BinaryWriter会在处置时关闭外部流,以及如何防止这种情况发生?(.NET C#)

我有一个方法接收使用BinaryWriter在其上写入的Stream.但是当我处理这个BinaryWriter时,它也会关闭流.我可以不妥协地把它留下来让我可以打开我的小溪吗?

.net c# stream binarywriter

30
推荐指数
4
解决办法
8014
查看次数

流不可读错误

我在声明中收到"Stream is not readable"的消息:

using (StreamReader sr = new StreamReader(ms))
Run Code Online (Sandbox Code Playgroud)

我已经尝试过这里发布的提示但没有成功.谢谢您的帮助.

这是我的代码:

XmlSerializer xmlSerializer = new XmlSerializer(typeof(Conflict));
//Serialize Conflicts array to memorystream as XML
using (MemoryStream ms = new MemoryStream())
{
    using (StreamWriter sw = new StreamWriter(ms))
    {
        foreach (Conflict ct in Conflicts)      
            xmlSerializer.Serialize(sw, ct);

        sw.Flush(); //Site tip
        ms.Position = 0;  //Site tip
    }
    //Retrieve memory stream to string
    using (StreamReader sr = new StreamReader(ms))
    {
        string conflictXml = String.Format(CultureInfo.InvariantCulture, "{0}</NewDataSet>",
Run Code Online (Sandbox Code Playgroud)

c# memorystream xml-serialization

18
推荐指数
1
解决办法
4万
查看次数

我如何在.NET中"分叉"一个流?

正如前面所讨论的,当一个BinaryReader在或的BinaryWriter被关闭,它的底层流中获取关闭以及(AARGH).考虑一下这种情况:一个例程R传递给一个MemoryStream,比如说M; 我想写一些东西M,然后将它传递给另一个例程进行更多处理(不一定写).为方便起见,我想M用BinaryWriter 包装来写我的文章.写完之后,我已经完成了BinaryWriter,但没有完成M.

void R(MemoryStream M)
{
    using (B = new BinaryWriter(M))
    {
        // write some stuff using B
    }

    S(M);  // now pass M to another routine for further processing
}
Run Code Online (Sandbox Code Playgroud)

但是,我无法在不关闭的情况下处理BinaryStream M.

问:有没有办法做以下任何一种情况?

  • 从MemoryStream中提取底层byte [],
  • 克隆一个流
  • 它关闭后重新打开一个流

c# clone memorystream stream

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