我想读大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,所以它不应该是我的机器问题.
解决方法
只需使用
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. }