gpt4 book ai didi

c# - 合并大文件的最佳方法是什么?

转载 作者:行者123 更新时间:2023-11-30 13:55:32 24 4
gpt4 key购买 nike

我必须合并数千个大文件(每个约 200MB)。我想知道合并这些文件的最佳方法是什么。行将有条件地复制到合并的文件中。可以使用 File.AppendAllLines 或使用 Stream.CopyTo 吗?

使用 File.AppendAllLines

for (int i = 0; i < countryFiles.Length; i++){
string srcFileName = countryFiles[i];
string[] countryExtractLines = File.ReadAllLines(srcFileName);
File.AppendAllLines(actualMergedFileName, countryExtractLines);
}

使用 Stream.CopyTo

using (Stream destStream = File.OpenWrite(actualMergedFileName)){
foreach (string srcFileName in countryFiles){
using (Stream srcStream = File.OpenRead(srcFileName)){
srcStream.CopyTo(destStream);
}
}
}

最佳答案

您可以一个接一个地编写文件。例如:

static void MergingFiles(string outputFile, params string[] inputTxtDocs)
{
using (Stream outputStream = File.OpenWrite(outputFile))
{
foreach (string inputFile in inputTxtDocs)
{
using (Stream inputStream = File.OpenRead(inputFile))
{
inputStream.CopyTo(outputStream);
}
}
}
}

在我看来,上面的代码确实是高性能的,因为 Stream.CopyTo() 的算法非常简单,所以该方法非常高效。反射器渲染它的核心如下:

private void InternalCopyTo(Stream destination, int bufferSize)
{
int num;
byte[] buffer = new byte[bufferSize];
while ((num = this.Read(buffer, 0, buffer.Length)) != 0)
{
destination.Write(buffer, 0, num);
}
}

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

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com