Как я могу получить расширение сжатого файла после сжатия с помощью System.IO.Compression.GZipStream
?
Например, если исходный файл имеет имя test.doc
и сжимается до test.gz
, как узнать, какое расширение файла использовать при распаковке?
Мне пришлось это сделать некоторое время назад. Решение состоит в том, чтобы использовать библиотеки J # для этого. Вы все еще пишете его на С#.
http://msdn.microsoft.com/en-us/magazine/cc164129.aspx
Это микрософт ответит на эту тему.
Нет способа получить имя файла - на самом деле, возможно, никогда не будет имени файла, если, например, кусок данных создается в памяти, а затем отправляется через сетевое соединение.
Вместо замены расширения файла, почему бы не добавить его, например: test.doc.gz Затем вы можете просто отключить его при распаковке.
Test.gz - это просто поток сырого байта без метаданных о том, что было сжато (например, исходное имя файла, расширение и т.д.). Что вам нужно сделать, так это создать архив, содержащий поток gzip и метаданные о каждом файле, содержащемся в архиве.
Статья, связанная с ответом Mech Software, предоставляет довольно разумный способ реализовать это.
Был также этот вопрос (смутно связанный) спросил некоторое время назад, которое может помочь:
Не уверен, в чем ваш вопрос. Я предполагаю, что вы хотите, чтобы механизм "помнил", что расширение было до сжатия?
Если это вопрос, тогда будет работать соглашение test.doc, сжимающее в test.doc.gz.