我有 2 个 zip 文件(zip1 和 zip2),我需要将这些文件合并为一个,我该如何解决? 我知道我可以修复它,将 ZIP1 解压到临时文件夹,然后将其添加到 zip2,但我认为它效率低下,更快的方法是什么?
我正在使用 System.IO.Compression
库...
我使用这段代码来探索 Zip2:
using (ZipArchive archive = ZipFile.OpenRead(Zip2))
{
foreach (ZipArchiveEntry entry in archive.Entries)
{
/*...*/
}
}
PD/:Zip1 和 Zip2 文件有文件、文件夹和子文件夹
最佳答案
我还没有真正测试过这个,但你可以试一试:
public ZipArchive Merge(List<ZipArchive> archives)
{
if (archives == null) throw new ArgumentNullException("archives");
if (archives.Count == 1) return archives.Single();
using (var memoryStream = new MemoryStream())
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (var zipArchive in archives)
{
foreach (var zipArchiveEntry in zipArchive.Entries)
{
var file = archive.CreateEntry(zipArchiveEntry.FullName);
using (var entryStream = file.Open()) {
using (var streamWriter = new StreamWriter(entryStream)) { streamWriter.Write(zipArchiveEntry.Open()); }
}
}
}
return archive;
}
}
}
关于c# - 如何将 2 个 zip 文件合并为 1 个?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28035453/