如何解决C#中的OutOfMemory异常?

cyb*_*era 5 c#

我有一些巨大的xml文件,1 + gb.我需要对它们进行一些过滤操作.我想出的最简单的想法是将它们保存为txt和ReadAllText,并开始执行一些操作,如

  var a = File.ReadAllText("file path");
  a = a.Replace("<", "\r\n<");
Run Code Online (Sandbox Code Playgroud)

然而,在我尝试这样做的那一刻,程序崩溃了内存.我在运行它时看着我的任务管理器,RAM使用率上升到50%,当它达到它时,程序就会死掉.

有没有人对我如何操作此文件有任何想法,避免OutOfMemory异常或允许程序提取更多的内存.

tit*_*tol 6

如果您可以逐行执行此操作,则File.ReadAllText可以使用 说“一次给我一行”,而不是使用 说“将所有内容读到内存中” File.ReadLines

这将返回使用延迟执行的 IEnumerable。你可以这样做:

using(StreamWriter sw = new StreamWriter(newFilePath))
foreach(var line in File.ReadLines(path))
{
    sw.WriteLine(line.Replace("<", "\r\n<"));
}
Run Code Online (Sandbox Code Playgroud)

如果您想了解有关延迟执行的更多信息,可以查看github 页面。