我在将字节数组转换为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();
}
}
答案 0 :(得分:2)
GZipStream
不是zip文件,基本上 - 它是一个gzip文件。这只是压缩数据,没有任何多个文件,文件名等概念。如果您将文件保存为foo.gz
,您可能会发现您使用的zip工具知道如何解压缩,但您肯定需要了解它是与带有文件条目等的foo.zip
不同。
如果您要创建实际 zip文件,可能需要查看SharpZipLib,System.IO.Compression.ZipFile
或类似的库。