【发布时间】:2015-10-16 16:31:34
【问题描述】:
在我的 c# 程序中,我正在使用一个对象(第三方,因此我无法更改其源代码),该对象在其构造函数 (var myObject = new MyObject(stream);) 中接收流。
我的挑战是,我需要先对文件的某些行进行一些更改,然后才能将其提供给该对象。
为此,我编写了以下代码(确实有效):
using (var st = new MemoryStream())
using (var reader = new StreamReader(path))
{
using (var writer = new StreamWriter(st))
{
while (!reader.EndOfStream)
{
var currentLine = reader.ReadLine().Replace(@"XXXX", @"YYYY");
writer.Write(currentLine);
}
writer.Flush();
st.Position = 0;
var myObject = new MyObject(st);
}
}
所以,这确实有效,但它似乎效率很低,因为它不再真正流式传输信息,而是在将信息传递给对象之前将其全部存储在内存流中。
有没有办法创建一个转换/“直通流”:
- 从流式阅读器中读取每个少量
- 对那少量进行调整
- 通过流式传输该数量
所以中间不会有很大的内存存储空间吧?
谢谢!!
【问题讨论】:
标签: c# memory stream streamreader