【问题标题】:Zipping files preserving the directory structure压缩文件保留目录结构
【发布时间】:2012-04-16 20:55:17
【问题描述】:

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

我面临的问题是压缩文件后它保留了目录结构,当我提取 zip 文件时,所有父文件夹都被再次创建,然后只有我能够查看该文件。当源文件存在时很烦人

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

我想删除所有这些父文件夹,以便我可以立即提取并访问压缩文件并打开它。我检查了压缩文件的 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);
}

我也尝试过 Addfiles 的重载方法,将 reserveDirectoryHierarchy 设置为“false”,但没有任何好处。

请告诉我该怎么做。

非常感谢。

【问题讨论】:

    标签: .net-3.5 zip


    【解决方案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);
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-03-16
      • 2013-12-29
      • 1970-01-01
      • 1970-01-01
      • 2021-12-29
      • 1970-01-01
      • 2020-12-18
      相关资源
      最近更新 更多