加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

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

发布时间:2020-12-15 06:45:54 所属栏目:百科 来源:网络整理
导读:我想读大TXT文件大小是500 MB, 首先我用 var file = new StreamReader(_filePath).ReadToEnd(); var lines = file.Split(new[] { 'n' }); 但是它丢失了内存异常然后我试图逐行读取,但再次读取大约150万行后它抛出的内存异常 using (StreamReader r = new St
我想读大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.
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读