【发布时间】:2016-02-04 10:41:45
【问题描述】:
您好,我有一个巨大的文档,我必须在 .NET 中使用 C# 逐行阅读。 然后执行一个操作,然后再次写入该行。
我正在使用较小的文件测试代码,实际文件包含 992.482 行。 我尝试了以下代码进行测试:
while (!scenFile.EndOfStream)
{ writer.WriteLine(scenFile.ReadLine().ToString();
}
而我只能写 992.474。然后我尝试使用 writer.Flush();
System.IO.TextWriter writer = File.CreateText(filepath);
StreamReader scenFile = new StreamReader(filepath2);
while (!scenFile.EndOfStream)
{ (here will go my do-something-function)
{
blah blah
}
writer.WriteLine(scenFile.ReadLine().ToString();
writer.Flush();
}
writer.Close();
然后,我得到了所有的台词。在代码中插入这一行后,我检查了一下,我可以获得的唯一方法是输入“writer.Flush();”在每次迭代中。我试图将它插入一个循环中,以便我使用“writer.Flush();”每隔一定次数的迭代,我尝试了从 50 到 500.000 的数字,但我无法获得所有的行。
问题是我必须对实际文件的 30 倍的文件执行操作,并且我需要尽可能快地执行此操作。有谁知道这是为什么,有什么解决办法吗?
提前致谢
【问题讨论】:
-
您是否尝试在
while循环之后但在关闭编写器之前调用writer.Flush()? -
是的,实际上我在程序的最后关闭了编写器。我已经编辑了代码以使其更清晰
-
好吧,你说对了。我没有正确理解它。我正在写一个关于它的解释,只需复制并粘贴您的用户名,以防您喜欢它,因为它是您的解决方案。很抱歉这个错误,非常感谢