加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

C#使用多个文件创建ZIP存档

发布时间:2020-12-15 17:46:27 所属栏目:百科 来源:网络整理
导读:我正在尝试使用多个文本文件创建ZIP存档,如下所示: Dictionarystring,string Values = new Dictionarystring,string();using (var memoryStream = new MemoryStream()){ string zip = @"C:TempZipFile.zip"; foreach (var item in Values) { using (var a
我正在尝试使用多个文本文件创建ZIP存档,如下所示:
Dictionary<string,string> Values = new Dictionary<string,string>();
using (var memoryStream = new MemoryStream())
{
    string zip = @"C:TempZipFile.zip";
    foreach (var item in Values)
    {
        using (var archive = new ZipArchive(memoryStream,ZipArchiveMode.Create,true))
        {
            var file = archive.CreateEntry(item.Key + ".txt");
            using (var entryStream = file.Open())
            using (var streamWriter = new StreamWriter(entryStream))
            {
                streamWriter.Write(item.Value);
            }
        }
    }
    using (var fileStream = new FileStream(zip,FileMode.Create))
    {
        memoryStream.Seek(0,SeekOrigin.Begin);
        memoryStream.CopyTo(fileStream);
    }
}

但是,ZIP仅使用最后一个文本文件创建,出了什么问题?

解决方法

您正在每次迭代时创建ZipArchive.交换foreach和使用应该解决它:
Dictionary<string,string>();
using (var memoryStream = new MemoryStream())
{
    string zip = @"C:TempZipFile.zip";
    using (var archive = new ZipArchive(memoryStream,true))
    {
        foreach (var item in Values)
        {
            var file = archive.CreateEntry(item.Key + ".txt");
            using (var entryStream = file.Open())
            using (var streamWriter = new StreamWriter(entryStream))
            {
                streamWriter.Write(item.Value);
            }
        }
    }

    using (var fileStream = new FileStream(zip,SeekOrigin.Begin);
        memoryStream.CopyTo(fileStream);
    }
}

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读