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); } } (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |