C#转换FileStream.WriteLine转到MemoryStream

Nea*_*ers 3 c# biztalk stream biztalk-pipelines

我在控制台程序中编写了一些代码并使用文件进行了测试.现在我想将它移植到实现特定接口的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 + ">");
Run Code Online (Sandbox Code Playgroud)

这里没有显示更多代码.以上只是为我所做的事情奠定了基础.

Igo*_*gor 6

使用可用于调用WriteLine 的StreamWriter.

MemoryStream streamToReturn = new MemoryStream();
var writer = new StreamWriter(streamToReturn);
writer.WriteLine("<" + schemaStructure.rootElement + ">");
Run Code Online (Sandbox Code Playgroud)

  • 我还必须在 StreamWriter 上进行 .Flush,而不是在 Stream 上。否则它会运行,但发出的 BizTalk 流末尾缺少一些字符。 (2认同)