You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

C#如何无需解压直接将ZipArchive内的条目复制到另一个ZipArchive

实现方案

你可以直接通过流复制的方式完成条目转移,全程不需要将文件解压到磁盘,具体实现代码如下:

using (var zipArchive1 = ZipFile.Open(zipFile1, ZipArchiveMode.Read))
{
    using (var zipArchive2 = ZipFile.Open(zipFile2, ZipArchiveMode.Update))
    {
        var sourceEntry = zipArchive1.GetEntry("fileName");
        // 先判断源条目是否存在
        if (sourceEntry == null)
        {
            // 这里可以补自定义的缺失处理逻辑
            return;
        }
        
        // 在目标压缩包中创建和源条目名称、路径一致的新条目
        var targetEntry = zipArchive2.CreateEntry(sourceEntry.FullName);
        // 直接复制流内容,无需落地磁盘
        using (var sourceStream = sourceEntry.Open())
        using (var targetStream = targetEntry.Open())
        {
            sourceStream.CopyTo(targetStream);
        }
    }
}

注意事项

  • 代码依赖System.IO.Compression命名空间,使用前需要先引入
  • 如果目标压缩包已经存在同名条目,CreateEntry会直接覆盖原有内容,如果需要避免覆盖,可以先调用zipArchive2.GetEntry(sourceEntry.FullName)做存在性判断再执行后续逻辑
  • 上述代码仅适用于文件类型的条目,如果需要转移文件夹类型的条目,需要额外遍历文件夹下的所有子条目批量处理

内容的提问来源于stack exchange,提问作者L.Cam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.06 05:18:01