C#仅从第二次读取文本OutOfMemoryException
所以我有一个大的C#仅从第二次读取文本OutOfMemoryException,c#,wpf,file,C#,Wpf,File,所以我有一个大的文本文件,我想读它,然后取一个特定的块(大约30行)。 这个块在我的文本文件中存在很多次,我想取最后一个 这就是我所尝试的: while (true) { Thread.Sleep(30000); string text = File.ReadAllText(@"c:\file.txt"); string table = string.Join("", 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
编辑
我尝试了另一种方法,逐行读取,但结果是一样的。使用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());
}
}
使用(System.IO.StreamWriter sw=new System.IO.StreamWriter(“C:\\Somewhere\\whater.txt”))
{
//生成所有单行并将其直接写入文件
对于(int i=0;我不能从接近工作结束的某个地方开始读取文件?但我不能确定我的块是否在项目>属性>构建选项卡>取消选中“首选32位”复选框。您不喜欢它。或者通过一行一行地读取文件来编写更智能的代码。或者承认文本文件会使数据库变得非常糟糕,并将数据移动到数据库表中。但是我已经有了从中读取的文本文件,那么有什么不同呢?当您调用file.writealtext时会发生OutOfMemory异常y次,尝试使用StreamWriter写出数据