GZipStream не работает - PullRequest
       28

GZipStream не работает

0 голосов
/ 06 апреля 2011

Я использую следующий код 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.

Можете ли вы помочь мне понять, что я делаю неправильно?

Ответы [ 2 ]

1 голос
/ 06 апреля 2011

ok обнаружил проблему:

Строка 2 должна выглядеть следующим образом:

FileStream fs = File.Create (@ "C: \ Projects \ Samples \ test \ compress.xml.zip ", 0);

0 голосов
/ 10 марта 2012

GZipStream не создает zip-архивы.Он создает файл gzip, который содержит только один файл, и совсем не обязательно хранит имя файла.Обычно вы должны использовать расширение .gz для идентификации gzip-файла, и обычно используется полное имя исходного файла с добавлением .gz в конце.См. Также здесь для получения дополнительной информации о формате gzip: http://en.wikipedia.org/wiki/Gzip#File_format

Если вы действительно хотите создавать zip-архивы, вы можете использовать библиотеку, например SharpZipLib: http://www.icsharpcode.net/opensource/sharpziplib/

...