Мое приложение «читает» текстовые файлы построчно и обрабатывает данные по мере необходимости.Причина, по которой я читаю по одной строке за раз, заключается в том, что, хотя большинство файлов довольно маленькие, некоторые на самом деле довольно большие.
Итак, вместо того, чтобы читать все в одну строку и, возможно, не хватает памяти, я читаюфайл за строкой.
...
const string filename = /*get filename*/
using (var sr = new StreamReader(filename))
{
string line;
while ((line = await sr.ReadLineAsync().ConfigureAwait(false)) != null)
{
// process 'line'
}
}
...
Но, глядя на (.NET 4.7.2) код для ReadLineAsync( ... )
, также существует вероятность того, что рассматриваемая строка может исчерпать всю доступную память, (в случае большого файла без '\n'
или '\r'
).
Прелесть ReadlineAsync(...)
в том, что он заботится обо всей кодировке и т. д.
Итак, мой вопрос, как я могу безопасно прочитать строку до определенного количества символов?