2011-02-09 67 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);