我有几个巨大的xml文件,1+gb。我需要对它们进行一些过滤操作。我想到的最简单的想法是将它们保存为txt和ReadAllText,并开始执行一些操作,如
var a = File.ReadAllText("file path");
a = a.Replace("<", "rn<");
然而,当我尝试这样做的时候,程序内存崩溃了。我在运行任务管理器时查看了它,RAM使用率攀升至50%,一旦达到这个水平,程序就会死亡。
有人知道我如何使用这个文件来避免OutOfMemory异常或允许程序占用更多内存吗。
如果你能一行一行地做,而不是说"把所有东西都读到内存中";使用File.ReadAllText
;一次给我一行";具有CCD_ 2。
这将返回使用延迟执行的IEnumerable。你可以这样做:
using(StreamWriter sw = new StreamWriter(newFilePath))
foreach(var line in File.ReadLines(path))
{
sw.WriteLine(line.Replace("<", "rn<"));
}
如果你想了解更多关于延迟执行的信息,你可以查看github页面。