如何绕过C#中的OutOfMemory异常



我有几个巨大的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页面。

最新更新