Сжать файл с помощью GZipStream, сохраняя его метаданные - PullRequest
2 голосов
/ 16 июня 2009

Как получить расширение сжатого файла после сжатия с помощью System.IO.Compression.GZipStream?

Например, если исходный файл называется test.doc и сжимается до test.gz, как узнать, какое расширение файла использовать при распаковке?

Ответы [ 4 ]

5 голосов
/ 16 июня 2009

Невозможно получить имя файла - на самом деле имя файла может вообще никогда не быть, если, например, часть данных создается в памяти и затем отправляется по сетевому соединению.

Вместо того, чтобы заменить расширение файла, почему бы не добавить его, например: test.doc.gz Тогда вы можете просто снять его при распаковке.

0 голосов
/ 16 июня 2009

test.gz - это просто необработанный поток байтов без метаданных о том, что было сжато (например, оригинальное имя файла, расширение и т. Д.). Вам нужно создать архив, содержащий поток gzip и метаданные о каждом файле, содержащемся в архиве.

Статья, на которую ссылается Ответ компании Mech Software , предлагает довольно разумный способ реализовать это.

Был также этот вопрос (неопределенно связанный), заданный некоторое время назад, который может помочь:

Как сжать каталог со встроенными классами сжатия .net?

0 голосов
/ 16 июня 2009

Я должен был сделать это некоторое время назад. Решение состоит в том, чтобы использовать библиотеки J # для этого. Вы все еще пишете это на C #, однако.

http://msdn.microsoft.com/en-us/magazine/cc164129.aspx

Это ответ Microsoft по теме.

0 голосов
/ 16 июня 2009

Не уверен, что ваш вопрос - я полагаю, вы хотите, чтобы механизм «запомнил», каким было расширение до того, как произошло сжатие?

Если это вопрос, то сработает соглашение о сжатии test.doc в test.doc.gz.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...