所以我有一个大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());
}
}
- 1 回答
- 0 关注
- 299 浏览
添加回答
举报
0/150
提交
取消