GZipStream not working



我使用下面的c#代码来压缩文件:

// Open the stream we want to compress
FileStream fs = File.Create(@"C:ProjectsSamplestestcompressed.zip", 0);
// Creates the GZipStream
GZipStream gzip = new GZipStream(fs, CompressionMode.Compress);
// Reading the content to compress
 byte[] bytes = File.ReadAllBytes(@"C:ProjectsSamplessamplefile.xml");
// Writing compressed content
gzip.Write(bytes, 0, bytes.Length);
gzip.Close();  // This also closes the FileStream (the underlying stream)

然而,当我从windows资源管理器中提取文件时,文件失去了扩展名,而不是samplefile.xml,它只是变成了samplefile。同样的事情也发生在。txt文件上,而不仅仅是。xml文件。

你能帮我看看我做错了什么吗?

ok找到问题了:

第二行必须如下所示:

FileStream fs = File.Create(@"C:ProjectsSamplestestcompressed.xml.zip", 0);

GZipStream不创建zip存档。它创建一个gzip文件,其中只包含一个文件,并且根本不需要存储文件名。通常,您应该使用.gz扩展名来标识gzip文件,并且通常使用原始文件的整个名称并在末尾附加.gz。有关gzip格式的更多信息,请参阅此处:http://en.wikipedia.org/wiki/Gzip#File_format

如果您确实想要创建zip存档,您可能希望使用像SharpZipLib这样的库:http://www.icsharpcode.net/opensource/sharpziplib/

相关内容

  • 没有找到相关文章

最新更新