2011-02-09 57 views
2

我使用codeplex的DotNetZip DLL(http://dotnetzip.codeplex.com/)壓縮我的程序中的一些文件。保存目錄結構的壓縮文件

問題我面臨的是在壓縮文件後,它保留了目錄結構,並且當我解壓縮zip文件時,所有父文件夾都重新創建,然後只能查看該文件。當源文件存在於

因此,如果我從g:\ Archive \ LogFiles \ W3SVC1 \ abc.log中壓縮文件並在解壓後創建'abc.zip'文件,文件夾存檔\ LogFiles \ W3SVC1 \正在創建,然後只能看到abc.log文件。這裏'g:'是我的共享驅動器的名稱。

我想擺脫所有這些父文件夾,以便我可以直接提取並觸及壓縮文件並將其打開。我檢查了Zip文件的Path屬性,它顯示了Archive \ LogFiles \ W3SVC1。不知何故,我需要刪除這個編程,但沒有找到任何選項很容易。我使用

代碼是這樣的:

using (ZipFile zip = new ZipFile()) 
{ 
    if (fileExtension != null) 
    { 
     zip.AddFiles(from f in sourceDir.GetFiles() where f.FullName.EndsWith(fileExtension) select f.FullName); 
    } 
    else 
    { 
     zip.AddFiles(from f in sourceDir.GetFiles() select f.FullName); 
    } 
    zip.Save(DestinationDir + OutFileName); 
} 

我也被reserveDirectoryHierarchy設置爲「假」,但沒有益處試圖Addfiles的重載方法。

請讓我知道該怎麼做。

很多預先感謝。

回答

1

我沒有正確調用Addfiles的重載方法。而不是空我傳遞空字符串,現在它不保留目錄結構。 所以更新的代碼如下所示:

if (fileExtension != null) 
       { 
        zip.AddFiles(from f in sourceDir.GetFiles() where f.FullName.EndsWith(fileExtension) select f.FullName,false,""); 

       } 
       else 
       { 
        zip.AddFiles(from f in sourceDir.GetFiles() select f.FullName,false,""); 
       } 
       zip.Save(DestinationDir + OutFileName); 
相關問題