我处理大文件(其容量至少为 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/