c# - 在 C# 中将多个文件合并到一个文件中最快的方法是什么?

标签 c# .net file-io merge

我处理大文件(其容量至少为 500MB),通过 C# 拆分和合并。

我必须将文件拆分成数千个文件,将这些文件分成一些组,然后按每个组合并这些文件。

文件的最小数量为 10,000。

我使用 Stream.CopyTo() 方法实现了合并功能。这是其中的主要部分。

using (Stream writer = File.OpenWrite(outputFilePath))
{
      int fileNum = filePaths.Count();
      for (int i = 0; i < fileNum; i++)
      {
           using (Stream reader = File.OpenRead(filePaths.ElementAt(i)))
           { reader.CopyTo(writer); }
       }
}

我测试了我的程序,将 500MB 拆分为 2 组的 17000 个文件,并将每组 8500 个文件合并为一个文件。

合并部分大约需要 80 秒。我认为与拆分同一文件大约需要 15~20 秒相比,它非常慢

有没有比我的代码更快的方法?

最佳答案

您的代码看起来不错,但 ElementAt 是一种代码味道。将其转换为数组并使用 [i] 代替。如果您有 10K 个元素,我敢肯定您会浪费很多时间。

关于c# - 在 C# 中将多个文件合并到一个文件中最快的方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36709258/

相关文章:

c# - 使用 .net、angular 和 electron 的桌面应用程序

.net - 将参数传递给 SQLCommand 的最佳方法是什么?

c# - 终结器在其对象仍在使用时启动

java - 为什么我不能在我的 Properties 文件中读取 Integer?

使用子进程的python脚本,将所有输出重定向到文件

c# - Net core通用存储库模式如何在编译时不知道其类型的情况下注入(inject)DbContext?

c# - openxml spreadsheat 另存为

c# - 如何从仅具有 C# 进程实例的可执行文件中获取图标

C# - 优化数据更新的最佳方式

java - 是否有任何有效的方法来查找文件中特定 4 字节 block 的所有实例的第一个字节?