无法打开C#压缩的zip文件

问题描述 投票:0回答:1

我正在编写一个网络应用程序,它可以上传/下载文件,这是我关于下载文件的代码(仅供测试):

    static void Main(string[] args)
    {
        var zipName = $"archive-{DateTime.Now:yyyy_MM_dd-HH_mm_ss}.zip";
        var folder = "D:\\xxdd";
        using var memoryStream = new MemoryStream();
        using var zipArchive = new ZipArchive(memoryStream, ZipArchiveMode.Create, true);
        var files = Directory.GetFiles(folder);
        foreach (var file in files)
        {
            zipArchive.CreateEntryFromFile(file, Path.GetFileName(file));
        }
        
        memoryStream.Position = 0;
        File.WriteAllBytes(zipName,memoryStream.ToArray());
        Console.WriteLine("Hello, World!");
    }

当我打开zip文件时,它说zip是空的,然后我将其拖到bandizip中,它说文件已损坏,但所有文件都在列表中并且可以解压缩。 如何修复它? enter image description here

enter image description here

c# asp.net io zip
1个回答
0
投票

试试这个,

static void Main(string[] args)
{
    var zipName = $"archive-{DateTime.Now:yyyy_MM_dd-HH_mm_ss}.zip";
    var folder = "D:\\xxdd";
    
    using (var fileStream = File.Create(zipName))
    using (var zipArchive = new ZipArchive(fileStream, ZipArchiveMode.Create, true))
    {
        var files = Directory.GetFiles(folder);
        foreach (var file in files)
        {
            zipArchive.CreateEntryFromFile(file, Path.GetFileName(file));
        }
    }
    
    Console.WriteLine("Hello, World!");
}
  1. 将 ZipArchive 放在单独的 using 块中以确保其正确 写之前先处理掉。
  2. 需要处理 ZipArchive 以最终确定 ZIP 文件 结构。
  3. 处理后,内存流包含完整的ZIP文件 数据。
© www.soinside.com 2019 - 2024. All rights reserved.