我有一个非常基本的问题。我有几个文本文件,每个文件的数据大小为几 GB。我有一个 C# WPF 应用程序,我用它来处理类似的数据文件,但远不及那个大小(现在可能大约 200-300mb)。我怎样才能有效地读取这些数据,然后在处理后将它写到别处,而不至于所有东西都卡住和崩溃?从本质上讲,从一个非常大的文件中读取的最佳方法是什么?对于我现在的小规模应用程序,我使用 System.IO.File.ReadAllLines
进行读取,使用 streamwriter
进行写入。我确信这两种方法对于如此大的文件来说不是最好的主意。我对 C# 没有太多经验,我们将不胜感激!
最佳答案
如果你可以逐行执行此操作,那么答案很简单:
- 读一行。
- 处理行。
- 写下这行。
如果您希望它运行得更快一些,请将它们放在三个 BlockingCollections
中,并指定上限为 10,这样较慢的步骤永远不会等待更快的步骤。如果您可以输出到不同的物理光盘(如果输出到光盘)。
即使在被问及过程是否逐行(两次)后,OP 仍更改了规则。
- 读取行以生成工作单元(打开到关闭标签)。
- 处理工作单元。
- 写下工作单元。
关于c# - 在 C# 中读取非常大的文本文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30873792/