2010-06-19 77 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); 
         } 
        } 
       } 
      } 

當我使用第三方庫(SharpLibZip)壓縮文件也會發生這種情況。

如何保持在壓縮zip文件擴展名?

+1

什麼'destFilename'的價值? – ChrisF 2010-06-19 16:24:25

+0

我試過filename.xml.gz和filename.gz – 2010-06-19 18:50:54

回答

4

你或許應該命名您的壓縮文件filename.xml.gz - 廣州的擴展故意被刪除,源擴展沒有存檔內的任何地方存儲,IIRC

+4

看代碼的時候,也是顯而易見的。它們只是壓縮字節流,而不是本身的文件(包括元數據)。所以最終存檔*不能擁有文件名。 – Joey 2010-06-19 16:28:06

+0

這是GZip的標準慣例。它的工作方式與包含文件元數據的Zip等不同。 – 2010-06-19 17:06:05

相關問題