为了账号安全,请及时绑定邮箱和手机立即绑定

C#仅从第二次读取文本OutOfMemoryException

C#仅从第二次读取文本OutOfMemoryException

C#
神不在的星期二 2021-04-29 13:13:11
所以我有一个大Text文件,我想读取并取特定的块(大约30行)。此块在我的文本文件中存在很多次,我想使用最后一个。所以这就是我尝试的:while (true)            {                Thread.Sleep(30000);                string text = File.ReadAllText(@"c:\file.txt");                string table = string.Join("", text.Substring(text.LastIndexOf("My Statistics:"))                    .Split(new[] { '\n' })                    .Take(24)                    .Select(i => i.ToString())                    .ToArray());                File.WriteAllText(@"last.txt", table);            }该Text文件每20秒更改一次,因此我使用while循环进行此操作,我需要在新Text文件上写入最后一个块。这里的问题是,在第一次(可以正常工作)之后,我得到了一个错误: OutOfMemoryException编辑我尝试另一种方法并逐行读取,但结果是相同的。
查看完整描述

1 回答

?
慕雪6442864

TA贡献1812条经验 获得超5个赞

使用StreamWriter将生成的每一行直接写入文本文件。这样可以避免先将整个长文件存储在内存中。


using (System.IO.StreamWriter sw = new System.IO.StreamWriter("C:\\Somewhere\\whatever.txt")) 

    {

        //Generate all the single lines and write them directly into the file

        for (int i = 0; i<=10000;i++)

        {

            sw.WriteLine("This is is : " + i.ToString());

        }

    }


查看完整回答
反对 回复 2021-05-08
  • 1 回答
  • 0 关注
  • 261 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信