压缩文件保留目录结构

时间:2011-02-09 14:29:13

标签: .net-3.5 zip

我正在使用codeplex中的DotNetZip DLL(http://dotnetzip.codeplex.com/)来压缩程序中的一些文件。

我面临的问题是在压缩文件之后它保留了目录结构,当我解压缩zip文件时,所有父文件夹再次被创建,然后我才能查看该文件。当源文件存在于

中时非常烦人

因此,如果我从g:\ Archive \ LogFiles \ W3SVC1 \ abc.log中压缩文件并在解压缩后创建'abc.zip'文件,则会创建文件夹Archive \ LogFiles \ W3SVC1 \然后只有我我能看到abc.log文件。这里'g:'是我的共享驱动器的名称。

我想摆脱所有这些父文件夹,以便我可以直接提取并到达压缩文件并打开它。我检查了Zipped文件的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设置为'false'来尝试Addfiles的重载方法,但没有任何好处。

请让我知道该怎么做。

非常感谢提前。

1 个答案:

答案 0 :(得分:1)

我没有正确调用Addfiles的重载方法。而不是Null我传递空字符串,现在它不保留目录结构。 所以更新后的代码如下:

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);