まあ、あなたはあなたの特定のケースのためのあなたの魔法を自分で理解しなければならないでしょう. よく知られているテキスト エンコーディングを使用する場合、それは非常に単純なことです。System.IO.StreamReader に目を向けると、それは ReadLine()、DiscardBufferedData() メソッド、および BaseStream プロパティです。ファイルが追加されているだけであることが確実であれば、ファイル内の最後の位置を覚えておいて、後でその位置に巻き戻し、もう一度読み始めることができるはずです。他にも考慮すべき点があり、これに対する唯一の普遍的な答えはありません。
単純な例として (動作させるにはまだ多くの調整が必要な場合があります):
static void Main(string[] args)
{
string filePath = @"c:\log.txt";
using (var stream = new FileStream(filePath, FileMode.Open, FileAccess.Read, FileShare.Read))
{
using (var streamReader = new StreamReader(stream,Encoding.Unicode))
{
long pos = 0;
if (File.Exists(@"c:\log.txt.lastposition"))
{
string strPos = File.ReadAllText(@"c:\log.txt.lastposition");
pos = Convert.ToInt64(strPos);
}
streamReader.BaseStream.Seek(pos, SeekOrigin.Begin); // rewind to last set position.
streamReader.DiscardBufferedData(); // clearing buffer
for(;;)
{
string line = streamReader.ReadLine();
if( line==null) break;
ProcessLine(line);
}
// pretty sure when everything is read position is at the end of file.
File.WriteAllText(@"c:\log.txt.lastposition",streamReader.BaseStream.Position.ToString());
}
}
}