如何使用过多的内存防止StreamReader.ReadLine(...)?

时间:2018-09-17 12:55:42

标签: c# memory streamreader

我的应用逐行“读取”文本文件,并在需要时处理数据。 我一次读一行的原因是,尽管大多数文件都很小,但实际上有些却很大。

因此,我没有逐行读取文件,而是将所有内容读入单个字符串并可能耗尽内存。

...
const string filename = /*get filename*/
using (var sr = new StreamReader(filename))
{
  string line;
  while ((line = await sr.ReadLineAsync().ConfigureAwait(false)) != null)
  {
    //  process 'line'
  }
}
...

但是,查看ReadLineAsync( ... )的(.NET 4.7.2)代码,还有可能所讨论的行耗尽了所有可用的内存(对于大文件而没有'\n''\r'

ReadlineAsync(...)的美丽之处在于它可以处理所有的编码等等。

所以我的问题是,如何安全地读取最多一定数量的字符的行?

0 个答案:

没有答案