【问题标题】:C# Convert FileStream.WriteLine to go to a MemoryStreamC# 将 FileStream.WriteLine 转换为 MemoryStream
【发布时间】:2017-05-08 17:09:30
【问题描述】:

我在控制台程序中编写了一些代码并使用文件进行了测试。 现在我想将它移植到实现特定接口的 BizTalk 管道组件。我不知道从文件到内存流的.Write.WriteLine 方法是如此不同。我以为我只能交换我的对象。没有.WriteLine 方法,.Write 方法需要偏移量和字节(附加参数)。

现在,鉴于我有很多 .WriteLine 语句,将测试代码更改为写入内存流的最佳方法是什么。我可以先写入 StringBuffer,但我认为这会破坏流式传输的概念(即一次将整个文档放在内存中)。

// This is how I used the streams in the Console program 
//FileStream originalStream = File.Open(inFilename, FileMode.Open);
//StreamWriter streamToReturn = new StreamWriter(outFilename);

// This is how to get the input stream in the BizTalk Pipeline Componenet 
System.IO.Stream originalStream = pInMsg.BodyPart.GetOriginalDataStream();

MemoryStream streamToReturn = new MemoryStream();
streamToReturn.WriteLine("<" + schemaStructure.rootElement + ">");

这里没有显示更多代码。以上只是为我所做的事情做准备。

【问题讨论】:

    标签: c# stream biztalk biztalk-pipelines


    【解决方案1】:

    使用StreamWriter,您可以使用它来调用WriteLine。

    MemoryStream streamToReturn = new MemoryStream();
    var writer = new StreamWriter(streamToReturn);
    writer.WriteLine("<" + schemaStructure.rootElement + ">");
    

    【讨论】:

    • 谢谢,这似乎很明显,因为我以前使用过 StreamWriter!我将我的变量称为流,而实际上它是 StreamWriter。
    • 我还必须在 StreamWriter 上使用 .Flush,而不是 Stream。否则它会运行,但 BizTalk 发出的流最后缺少一些字符。
    • @NealWalters - 正确,因为 StreamWriter 需要刷新到它正在写入的底层 Stream
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-19
    相关资源
    最近更新 更多