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

时间:2015-11-03 13:14:49

标签: c# .net zipfile

我在将字节数组转换为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();
    } 

}

1 个答案:

答案 0 :(得分:2)

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

如果您要创建实际 zip文件,可能需要查看SharpZipLibSystem.IO.Compression.ZipFile或类似的库。