完全なデータをメモリに保持できないことを認識しているため、一部をメモリにストリーミングして処理し、書き戻したいと考えています。
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();
}