2010-06-19 4 views
1

Я использую C# для программного сжатия файла xml. Сжатие работает нормально, но когда я запускаю файл из командной строки, расширение было удалено. Почему это должно быть?Почему мое программное сжатие уменьшает расширение файла?

Входящий файл назначения имеет расширение gz, в то время как исходный файл имеет расширение xml.

Вот мой код сжатия:

  using (FileStream input = File.OpenRead(filename)) 
      { 
       using (var raw = File.Create(destFilename)) 
       { 
        using (Stream gzipStream = new GZipStream(raw, CompressionMode.Compress)) 
        { 
         byte[] buffer = new byte[4096]; 
         int n; 
         while ((n = input.Read(buffer, 0, buffer.Length)) != 0) 
         { 
          gzipStream.Write(buffer, 0, n); 
         } 
        } 
       } 
      } 

Это также происходит, когда я использую 3-ю библиотеку партии (SharpLibZip) для сжатия файла.

Как сохранить расширение в сжатом zip-файле?

+1

Что значение 'destFilename'? – ChrisF

+0

Я пробовал filename.xml.gz и filename.gz –

ответ

4

Вы, вероятно, следует назвать сжатыми файлами filename.xml.gz - расширение GZ намеренно получает удалены, а расширение источника не хранится в архиве, IIRC

+4

Это также очевидно при просмотре кода. Они просто сжимают поток байтов, а не файл (включая метаданные) как таковой. Таким образом, окончательный архив * не может * иметь имя файла. – Joey

+0

Это стандартное соглашение для GZip. Он работает иначе, чем, например, Zip, который включает метаданные файлов. –

Смежные вопросы