c# - 如何将 2 个 zip 文件合并为 1 个?

标签 c# zip unzip

我有 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/

相关文章:

c# - C# 表单元素的动态命名

c# - 如何使用 SevenZipSharp 创建 SFX ZIP?

python - 在 Python 列表中压缩列表

java - 如何从 InputStream 中解压文件

java - 解压缩过程适用于一个 zipper ,但不适用于另一个 zipper ?

c# - Azure 服务总线订阅指标

C# 通用继承解决方法

c# - 在 C#/.Net 中解析 Lua 数据结构的最简单方法

c# - 如何压缩 FTP 服务器目录中的文件

java - 解压 Android 中的文件夹及其子文件夹