У меня есть текстовый файл, который я хочу читать по строкам и записывать позицию в текстовом файле, когда я иду. После прочтения любой строки файла программа может выйти, и мне нужно возобновить чтение файла на следующей строке, когда он возобновится.
Вот пример кода:
using (FileStream fileStream = new FileStream("Sample.txt", FileMode.Open, FileAccess.Read, FileShare.ReadWrite))
{
fileStream.Seek(GetLastPositionInFile(), SeekOrigin.Begin);
using (StreamReader streamReader = new StreamReader(fileStream))
{
while (!streamReader.EndOfStream)
{
string line = streamReader.ReadLine();
DoSomethingInteresting(line);
SaveLastPositionInFile(fileStream.Position);
if (CheckSomeCondition())
{
break;
}
}
}
}
Когда я запускаю этот код, значение fileStream.Position
не изменяется после прочтения каждой строки, оно только продвигается после прочтения нескольких строк. Когда он изменяется, он увеличивается в кратных 1024. Теперь я предполагаю, что под обложками происходит некоторая буферизация, но как я могу записать точную позицию в файле?