首页 > 编程语言 >C#读取记事本,里面有600万条数据,放入数组时:System.OutOfMemoryException

C#读取记事本,里面有600万条数据,放入数组时:System.OutOfMemoryException

时间:2023-10-28 10:55:21浏览次数:26  
标签:string filePath C# System oReader new OutOfMemoryException StreamReader

 

原因:使用文件流,然后读取文件内容,再解析的时候,会报内存溢出

 

处理办法:使用/n分隔

        /// <summary>
        /// 通过记事本,获取CRM所有客户的某个字段
        /// </summary>
        /// <returns></returns>
        public static List<string> GetFieldByText(string fieldname)
        {
            try
            {
                string filePath = string.Empty;
                string debugPath = System.Environment.CurrentDirectory;// Directory.GetCurrentDirectory();


                filePath = debugPath + $"\\CrmData\\{fieldname}.txt";

                int intNoOfLines = 0;
                using (StreamReader oReader = new
                StreamReader(filePath))
                {
                    while (oReader.ReadLine() != null) intNoOfLines++;
                }
                string[] strArrLines = new string[intNoOfLines];
                int intIndex = 0;
                using (StreamReader oReader = new
                StreamReader(filePath))
                {
                    string strLine;
                    while ((strLine = oReader.ReadLine()) != null)
                    {
                        strArrLines[intIndex++] = strLine;
                    }
                }

                #region xxxxx下面的方式会超出内存xxxxxxxxxxxxxx
                //if (!File.Exists(filePath))
                //{
                //    return new string[] { };
                //}
                //StreamReader streamReader = new StreamReader(filePath, Encoding.GetEncoding("GB2312"));
                //string content = streamReader.ReadToEnd();
                //streamReader.Close();

                //string[] textList = content.Split('&');  //内存溢出
                #endregion

                return strArrLines.ToList();

            }
            catch (Exception ex)
            {
                LoggerHelper.Log("CDPDataHelperError", "报错:" + ex.Message);
                throw;
            }
        }

 

发现的源地址:https://www.codenong.com/13415916/

 

标签:string,filePath,C#,System,oReader,new,OutOfMemoryException,StreamReader
From: https://www.cnblogs.com/parkerchen/p/17793792.html

相关文章

  • Log4J2漏洞(CVE-2021-44228)原理
    Log4J2漏洞(CVE-2021-44228)原理一、漏洞简介ApacheLog4j2是一个基于Java的日志记录工具,当前被广泛应用于业务系统开发,开发者可以利用该工具将程序的输入输出信息进行日志记录。2021年11月24日,阿里云安全团队向Apache官方报告了ApacheLog4j2远程代码执行漏洞。该漏洞是由于A......
  • ElasticSearch基础
    ES基本概念端口9300:ElasticSearch集群间组件通信端口9200:浏览器访问的http协议RESTful接口。http://localhost:9200Windows单机启动之前可能需要修改的部分地方config/elasticsearch.ymlxpack.security.enabled:false:改为false,禁用安全访问。bin/elasticsearch-env.ba......
  • 关于 Angular 的 hierarchical injector
    Angular的"dependencyinjection"是一种设计模式,它可以帮助我们更有效地组织和共享代码。在Angular中,我们可以通过注入服务(一个常见的可注入对象类型)到组件、指令或其他服务中,实现代码的复用和模块化。Angular的注入器系统是分层级的,也被称为"hierarchicalinjector"。这......
  • C++字符串
    C++字符串C++提供了两种类型的字符串表示形式:C风格字符串C++引入的string类类型C风格字符串C风格的字符串源于C语言,并在C++中继续得到支持。字符串实际上是使用Null字符终止的一堆字符数组。因此一个以NULL结尾的字符串,包含了组成字符串的字符。下面的声明和初始化创建了......
  • CF1553I
    传送门description对于一个\(1\)到\(n\)的排列\(p\),第\(i\)个位置的权值是\(p\)中数字\(i\),所在的连续自然数段的长度(可以递增,也可以递减)。现在给定一个数组\(a\),求第\(i\)个位置权值为\(a_i\)的排列\(p\)的个数。\(n\leq10^5\)10.0s1024MiBsolution数......
  • CentOS 安装 MySQL8,超详细!
    CentOS安装MySQL8,超详细!一、离线安装MySQL1.检查是否已安装mysqlrpm-qa|grepmysql2.卸载已安装的mysqlrpm-evmysql80-community-release-el7-7.noarchrpm-evmysql-community-client-plugins-8.0.22-1.ky3.kb1.x86_643.下载rpm包:下载地址:MySQL::Dow......
  • 【Dw 网页编辑开发工具】Dreamweaver CC2018 Mac中文汉化版
    Dreamweavercc2018mac中文汉化版是Adobe公司开发的一款专门用于macOS10.11或更高系统的网页编辑开发工具,也是当前最流行、最为广泛使用的网站开发软件,大家对这款软件应该都有听说过吧,毕竟该软件在行业中的知名度非常高,并且它的编辑功能也是众所周知。软件地址:看置顶贴软件特色:1......
  • 【Au 音频处理软件】Audition CC 2018 Mac 中文汉化版安装教程
    AuditionCC2018Mac中文汉化版是由Adobe公司位Mac用户所开发的一款OSX版本的专业性极强的音频处理软件,简称Aucc2018mac,软件提供了效果最佳的音频清理、恢复和精确编辑工具,通过此软件您可以快速轻松制作音频、编辑音频以及进行后期处理,为音频制作者提供了一系列的音频制作处理服务......
  • 【动画制作编辑软件】Adobe Animate CC 2018 Mac 中文汉化版
    AnimateCC2018提供众多实用设计工具,主要用于html动画编辑,设计适合游戏、应用程序和Web的交互式矢量动画,可帮助我们不用写代码的情况下完成简单的交互动效实现,借助这款业界领先的动画工具集,让网页设计人员轻松制作适用于网页、数位出版、多媒体广告、应用程序、游戏等用途的互动式......
  • JAVA-EE在不使用MVC分层的情况下用一个servlet完成转账业务------Java-Web项目
    在不使用MVC分层的情况下用一个servlet完成转账业务packagecom.bjpowernode.Bank.servlet;importcom.bjpowernode.Bank.exception.AppException;importcom.bjpowernode.Bank.exception.MoneyNotEnoughException;importcom.bjpowernode.oa.utils.DBUtil;importjakarta.ser......