【发布时间】: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”,但没有任何好处。
请告诉我该怎么做。
非常感谢。
【问题讨论】: