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

时间:2018-04-22 09:45:30

标签: c# wpf file

所以我有一个大的$price = (wc_price($selectedShipping->cost)*1.15); 文件,我想阅读并采取特定的块(大约30行)。 这个块在我的文本文件中存在很多次,我想拿最后一个。

所以这就是我的尝试:

Text

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); } 文件每20秒更改一次,因此我使用while循环执行此操作,我需要在新Text文件中写入最后一个块。

这里的问题是,在第一次(工作正常)之后我收到了一个错误:Text

修改

我尝试了另一种方法并逐行阅读,但结果是一样的。

1 个答案:

答案 0 :(得分:0)

使用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());
        }
    }