我想读取大小为500MB的大文本文件,
首先我使用
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);
}
但我再次收到
发生“System.OutOfMemoryException”类型的异常
mscorlib.dll 但未在用户代码中处理
我的机器功能强大,内存为 8GB,所以这不应该是我的机器问题。
p.s:我尝试在 NotePad++ 中打开此文件,但收到“文件太大而无法打开”异常。
只需使用文件.ReadLines http://msdn.microsoft.com/en-us/library/dd383503.aspx它返回一个IEnumerable<string>
并且不会立即将所有行加载到内存中。
foreach (var line in File.ReadLines(_filePath))
{
//Don't put "line" into a list or collection.
//Just make your processing on it.
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)