c# - 在 C# 中读取非常大的文本文件的最快方法

标签 c# wpf large-files

我有一个非常基本的问题。我有几个文本文件,每个文件的数据大小为几 GB。我有一个 C# WPF 应用程序,我用它来处理类似的数据文件,但远不及那个大小(现在可能大约 200-300mb)。我怎样才能有效地读取这些数据,然后在处理后将它写到别处,而不至于所有东西都卡住和崩溃?从本质上讲,从一个非常大的文件中读取的最佳方法是什么?对于我现在的小规模应用程序,我使用 System.IO.File.ReadAllLines 进行读取,使用 streamwriter 进行写入。我确信这两种方法对于如此大的文件来说不是最好的主意。我对 C# 没有太多经验,我们将不胜感激!

最佳答案

如果你可以逐行执行此操作,那么答案很简单:

  1. 读一行。
  2. 处理行。
  3. 写下这行。

如果您希望它运行得更快一些,请将它们放在三个 BlockingCollections 中,并指定上限为 10,这样较慢的步骤永远不会等待更快的步骤。如果您可以输出到不同的物理光盘(如果输出到光盘)。

即使在被问及过程是否逐行(两次)后,OP 仍更改了规则。

  1. 读取行以生成工作单元(打开到关闭标签)。
  2. 处理工作单元。
  3. 写下工作单元。

关于c# - 在 C# 中读取非常大的文本文件的最快方法,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30873792/

相关文章:

python - 将 csv 读入多个数据帧

c# - WPF 在 MouseOver 上更改路径填充

c# - 如何避免使用 System.Reflection 在 ComboBox 中显示枚举属性值

python加载的内存比文件的实际大小多

wpf - Prism 和循环依赖

c# - 在 WCF 中使用 netsh 添加端口作为没有管理员权限的域管理员

c - 函数 fseeko 的隐式声明

c# - C# 方法是否允许可空列表作为参数?

c# - 如何使用 LINQ 对多个字段进行排序?

c# - 飞船 Sprite 的程序生成