gpt4 book ai didi

c# - 如何压缩zip文件中的多个文件

转载 作者:太空狗 更新时间:2023-10-29 20:52:42 24 4
gpt4 key购买 nike

我正在尝试将两个文本文件压缩成一个 zip 文件。这是我的公共(public)方法的样子:

public ActionResult Index()
{

byte[] file1 = System.IO.File.ReadAllBytes(@"C:\file1.txt");
byte[] file2 = System.IO.File.ReadAllBytes(@"C:\file2.txt");
Dictionary<string, byte[]> fileList = new Dictionary<string, byte[]>();
fileList.Add("file1.txt", file1);
fileList.Add("file2.txt", file2);
CompressToZip("zip.zip", fileList);

return View();
}

这是我的压缩方法的样子:

private void CompressToZip(string fileName, Dictionary<string, byte[]> fileList)
{
using (var memoryStream = new MemoryStream())
{
foreach (var file in fileList)
{
using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
var demoFile = archive.CreateEntry(file.Key);

using (var entryStream = demoFile.Open())
using (var b = new BinaryWriter(entryStream))
{
b.Write(file.Value);
}
}
}

using (var fileStream = new FileStream(fileName, FileMode.Create))
{
memoryStream.Seek(0, SeekOrigin.Begin);
memoryStream.CopyTo(fileStream);
}
}

}

在这种方法中,完美创建了 zip 文件夹。但是问题是我在 zip 文件夹中只有一个文件(只有第二个文件将在 zip 文件夹中创建)。没有发现错误。

Question: How to compress both text files into the zip folder?

先谢谢你!

最佳答案

您的代码实际上是将两个单独的 zip 存档保存到 zip.zip 文件(为每个要压缩的文件创建一个新的 ZipArchive)。第一个 zip 存档仅包含 file1.txt,第二个仅包含 file2.txt。当您在 Windows 资源管理器中打开 zip.zip 时,它只会显示第二个 zip 存档的内容。

要创建包含这两个文件的单个 zip 存档,只需将 ZipArchive 的创建移到 fileList 循环之外:

using (var archive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true))
{
foreach (var file in fileList)
{
var demoFile = archive.CreateEntry(file.Key);

using (var entryStream = demoFile.Open())
using (var b = new BinaryWriter(entryStream))
{
b.Write(file.Value);
}
}
}

关于c# - 如何压缩zip文件中的多个文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37091361/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com