2011-02-07 37 views
2

我用下面的代碼創建一個zip文件:如何僅使用SharpZipLib庫壓縮沒有文件夾的文件? (C#)

var files = Directory.GetFiles(targetPath); 
var zip = ZipFile.Create(targetPath + "/myzip.zip"); 
zip.BeginUpdate(); 
foreach (var file in files) zip.Add(file, CompressionMethod.Deflated); 
zip.CommitUpdate(); 
zip.Close(); 

我得到歸檔的結構如下:

myzip.zip 
    - Folder1 
     - Folder2 
     - File1.txt 
     - File2.txt 
     - File3.txt 

但我需要:

myzip.zip 
    - File1.txt 
    - File2.txt 
    - File3.txt 

幫助請。

回答

6

望着SharpZipLib代碼,有這種方法在zip文件類這似乎做你想要的:

public void Add(IStaticDataSource dataSource, string entryName, CompressionMethod compressionMethod)

你只需要從文件中得到一個IStaticDataSource,並創建相應的entryName(不包括目錄路徑),即搜索file字符串中的最後一個目錄分隔符Path.DirectorySeparatorChar Field,之後的任何內容都應該只是您的文件名。

澄清:我原本建議Add(string file, string entryName),但編輯上述方法,當我看到OP是在指定一個compressionMethod在調用。但是新的zip條目的默認compressionMethod是CompressionMethod.Deflated,所以使用Add(string file, string entryName)方法應該得到相同的結果,而不必獲得IStaticDataSource。

+0

謝謝!我將這樣使用:zip.Add(file,Path.GetFileName(file)); – 2011-02-07 17:55:36

相關問題