2012-04-27 145 views
0

我:Zip壓縮

public static void compress(string fileName) 
    { 
     using (FileStream inFile = File.OpenRead(Directory.GetCurrentDirectory() + "\\" + subFolder + "\\" + fileName)) 
     { 
      string newFileName = fileName.Remove(fileName.Length - 3) + "zip"; 
      using (FileStream outFile = File.Create(Directory.GetCurrentDirectory() + "\\" + subFolder + "\\" + newFileName)) 
      { 
       using (GZipStream Compress = new GZipStream(outFile, CompressionMode.Compress)) 
       { 
        inFile.CopyTo(Compress); 
       } 
      } 
     } 
    } 

的文件名,例如data.txt中。壓縮工作正常,但是當我查看壓縮文件時,有名爲「data」的文件。 「txt」擴展名在哪裏?文件名仍應有名稱「data.txt」。

我失蹤或做錯了什麼?

問候 kazik

+2

這不是一個zip文件。 – 2012-04-27 18:47:38

+0

以及如何製作zip文件? – user1359657 2012-04-27 19:06:56

+0

如果你想壓縮,然後使用DotNetZip http://dotnetzip.codeplex.com/ – 2012-04-27 20:01:29

回答

0

當你使用壓縮數據GZipStream,你向它提供字節的流,而不是一個文件 - 在GZipStream實例不知道流是否從網絡傳來,從內存,或從一個文件,因此不能將文件名嵌入到存檔中。

但是,所有文件的內容都在存檔中正確保存。您可以使用7zip將它們解壓縮到一個新文件中(默認情況下,它會給出一個令牌名稱,例如data),重新命名您的文件,並且您將擁有與之前相同的文件。