我使用以下C#代码压缩文件:
// Open the stream we want to compress
FileStream fs = File.Create(@"C:\Projects\Samples\test\compressed.zip", 0);
// Creates the GZipStream
GZipStream gzip = new GZipStream(fs, CompressionMode.Compress);
// Reading the content to compress
byte[] bytes = File.ReadAllBytes(@"C:\Projects\Samples\samplefile.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文件。
你能帮我看看我做错了吗?
答案 0 :(得分:1)
确定发现了问题:
第2行必须如下:
FileStream fs = File.Create(@“C:\ Projects \ Samples \ test \ compressed.xml.zip”,0);
答案 1 :(得分:0)
GZipStream不会创建zip存档。它创建一个gzip文件,该文件只包含一个文件,并不一定存储文件名。通常,您应该使用.gz
扩展名来标识gzip文件,并且通常使用末尾附加.gz
的原始文件的完整名称。有关gzip格式的更多信息,请参见此处:http://en.wikipedia.org/wiki/Gzip#File_format
如果您确实想要创建zip存档,可能需要使用类似SharpZipLib的库:http://www.icsharpcode.net/opensource/sharpziplib/