C# · 12月 31, 2021

c# – 读取大TXT文件,内存不足异常

我想读大TXT文件大小是500 MB,
首先我用 var file = new StreamReader(_filePath).ReadToEnd(); var lines = file.Split(new[] { ‘\n’ });

但是它丢失了内存异常然后我试图逐行读取,但再次读取大约150万行后它抛出的内存异常

using (StreamReader r = new StreamReader(_filePath)) { while ((line = r.ReadLine()) != null) _lines.Add(line); }

或者我用过

foreach (var l in File.ReadLines(_filePath)) { _lines.Add(l); }

但我再次收到

An exception of type ‘System.OutOfMemoryException’ occurred in
mscorlib.dll but was not handled in user code

我的机器是功能强大的机器与8GB的RAM,所以它不应该是我的机器问题.

p.s:我试图在NotePadd中打开这个文件,我收到’该文件太大,无法打开’异常.

解决方法 只需使用 File.ReadLines,返回IEnumerable< string>并且不会立即将所有行加载到内存. foreach (var line in File.ReadLines(_filePath)){ //Don’t put “line” into a list or collection. //Just make your processing on it.}