将C#的FileStream.WriteLine转换为写入MemoryStream

4
我在控制台程序中编写了一些代码,并使用文件进行了测试。 现在我想将它移植到实现特定接口的 BizTalk Pipeline 组件中。我不知道从文件到内存流的 .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 + ">");

这里没有展示所有的代码。上面只是为了讲述我所做的事情。

1个回答

7
使用StreamWriter,可以使用WriteLine方法。
MemoryStream streamToReturn = new MemoryStream();
var writer = new StreamWriter(streamToReturn);
writer.WriteLine("<" + schemaStructure.rootElement + ">");

1
谢谢,现在看起来很明显,因为我之前使用的是StreamWriter!我把我的变量称为流,但实际上它是一个StreamWriter。 - NealWalters
1
我还必须在StreamWriter上调用.Flush,而不是Stream。否则,它会运行,但BizTalk发出的流在末尾会缺少一些字符。 - NealWalters
@NealWalters - 正确的,因为 StreamWriter 需要刷新到它正在写入的底层 Stream - Igor

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接