我认识到我无法将完整的数据保存在内存中,因此我想在内存中流式传输部分并使用它们,然后将它们写回。
Yield 是一个非常有用的关键字,它省去了使用枚举器和保存索引的全部工作,......
但是,当我想IEnumerable
通过 yield 移动并将它们写回集合/文件时,我是否需要使用枚举器概念,或者是否有类似与 yield 相反的东西?我去RX,但我不清楚它是否能解决我的问题?
public static IEnumerable<string> ReadFile()
{
string line;
var reader = new System.IO.StreamReader(@"c:\\temp\\test.txt");
while ((line = reader.ReadLine()) != null)
{
yield return line;
}
reader.Close();
}
public static void StreamFile()
{
foreach (string line in ReadFile())
{
WriteFile(line);
}
}
public static void WriteFile(string line)
{
// how to save the state, of observe an collection/stream???
var writer = new System.IO.StreamWriter("c:\\temp\\test.txt");
writer.WriteLine(line);
writer.Close();
}