gpt4 book ai didi

c# - 如何使用 C# 有效地合并巨大的文件

转载 作者:太空狗 更新时间:2023-10-29 19:53:20 27 4
gpt4 key购买 nike

我有超过 125 个 TSV 文件,每个文件大约 100Mb,我想合并这些文件。合并操作允许销毁 125 个文件,但不能销毁数据。重要的是最后,我得到了一个大文件,一个接一个地包含所有文件的内容(没有特定顺序)。

有没有一种有效的方法来做到这一点?我想知道 Windows 是否提供了一个 API 来简单地将所有这些文件组成一个大的“联合”?否则,我将不得不读取所有文件并编写一个大文件。

谢谢!

最佳答案

那么“合并”真的只是一个接一个地写入文件吗?这非常简单——只需打开一个输出流,然后重复打开一个输入流、复制数据、关闭。例如:

static void ConcatenateFiles(string outputFile, params string[] inputFiles)
{
using (Stream output = File.OpenWrite(outputFile))
{
foreach (string inputFile in inputFiles)
{
using (Stream input = File.OpenRead(inputFile))
{
input.CopyTo(output);
}
}
}
}

这是使用 .NET 4 中新增的 Stream.CopyTo 方法。如果您不使用 .NET 4,另一个辅助方法会派上用场:

private static void CopyStream(Stream input, Stream output)
{
byte[] buffer = new byte[8192];
int bytesRead;
while ((bytesRead = input.Read(buffer, 0, buffer.Length)) > 0)
{
output.Write(buffer, 0, bytesRead);
}
}

据我所知,没有比这更有效的了……但重要的是,这根本不会占用您系统上的太多内存。这不像是重复将整个文件读入内存然后再将其全部写出。

编辑:正如评论中所指出的,您可以通过多种方式调整文件选项,可能使其在文件系统处理数据方面的效率略有提高。但从根本上说,您将读取数据并写入数据,无论哪种方式,一次一个缓冲区。

关于c# - 如何使用 C# 有效地合并巨大的文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/3556755/

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