Как начать читать текстовый файл сначала после прочтения?

Как начать читать текстовый файл заново после прочтения до конца Readline()-ом?

using (var reader = new StreamReader(path, Encoding.Default))
            {
                newline = reader.ReadLine();}

Ответы (1 шт):

Автор решения: Alex Krass

Нужно сбросить в самой обертки StreamReader буфер через reader.DiscardBufferedData(); и дополнительно установить у потока значение текущей позиции в ноль. Добраться до потока и сбросить его можно через reader.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);.

reader.DiscardBufferedData();
reader.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);

Полный пример:

using System;
using System.IO;
using System.Text;

namespace ConsoleApplication
{ 
    class Program
    {
        static void Main(string[] args)
        {
            using (var reader = new StreamReader(@"C:\testfile.txt", Encoding.Default))
            {
                string newline = "";
                while (newline != null)
                {
                    newline = reader.ReadLine();
                    Console.WriteLine(newline);
                }

                //Сброс
                reader.DiscardBufferedData();
                reader.BaseStream.Seek(0, System.IO.SeekOrigin.Begin);

                newline = "";
                while (newline != null)
                {
                    newline = reader.ReadLine();
                    Console.WriteLine(newline);
                }
            }

            Console.ReadLine();
        }
    }
}
→ Ссылка