StreamReader在处理大文件时卡住了

4

我正在尝试使用StreamReader读取一个50GB的文本文件。由于我的程序在第二行代码处(而不是文件)冻结,因此它甚至无法读取文件。

string filename = @"C:\wikipedia\dump.xml";
StreamReader wikipediaReader = new StreamReader(filename);
string line = "";
while((line = wikipediaReader.ReadLine()) != null)
{
    Console.WriteLine(line);
    Console.ReadKey();
}

2
我会打断点并查看调用堆栈,看看它在 StreamReader 构造函数中卡住了哪里。这可能会给我们一些线索。 - Mike Zboray
10
这是你的反恶意软件介入了。不,你无法从调用栈上看到它,它在偏远地区试图弄清楚如何处理50吉字节的潜在恶意软件。 - Hans Passant
2
@user - XML文件非常容易占用您的计算机资源,任何反恶意软件都会将它们置于列表顶部。它们的DTD是一种很好的DoS攻击手段。 - Hans Passant
7
好了,就是这样。当解药和问题无法区分时,谁还需要病毒呢?至少要提到名称,这样每个人都能学会避免。 - Hans Passant
4
我使用了奥卡姆剃刀原理。 - Hans Passant
显示剩余25条评论
3个回答

2

可能是反病毒软件在尝试扫描该文件。


社区维基,所以我不会为@HansPassant的工作负责。我只是想把这个作为一个真正的答案发布出来。 - Joel Coehoorn

0

-1

在读取文件时,我们必须使用分隔符并设置起始位置和结束位置。

我建议您检查此链接

如果您仍然有问题,请告诉我,我将帮助您提供可行的代码。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接