它似乎不是一个有效的存档(字节数组到c#.net中的zip文件)

本文关键字:文件 数组 字节数 字节 中的 net zip 有效 一个 | 更新日期: 2023-09-27 18:20:18

我在将字节数组转换为zip文件时遇到问题。尽管zip文件是使用下面的代码创建的,但当我提取zip文件时,我会收到错误"Cannot open file. It does not appear to be a valid archive"

private static void ShowZipFile(string fileName, byte[] data)
{
    byte[] compress = Compress(data);
    File.WriteAllBytes(fileName, compress);
}            
private static byte[] Compress(byte[] data)
{
    using (MemoryStream memory = new MemoryStream())
    {
        using (GZipStream gzip = new GZipStream(memory,
        CompressionMode.Compress, true))
        {
            gzip.Write(data, 0, data.Length);
        }
        return memory.ToArray();
    } 
}

它似乎不是一个有效的存档(字节数组到c#.net中的zip文件)

GZipStream基本上不是zip文件,而是gzip文件。这只是压缩的数据,没有任何多个文件、文件名等概念。如果你将文件保存为foo.gz,你可能会发现你使用的zip工具知道如何解压缩,但你肯定需要明白,它与具有文件项等的foo.zip不同。

如果您想创建一个实际的zip文件,您可能需要查看SharpZipLib、System.IO.Compression.ZipFile或类似的库。