避免使用Xceed.Zip.QuickZip-Zip实用程序创建不必要的目录
本文关键字:不必要 创建 实用程序 QuickZip-Zip Xceed Zip | 更新日期: 2023-09-27 18:25:07
我在应用程序中使用付费版本的Xceed.Zip.QuickZip.Zip实用程序来压缩包含文件和目录的文件夹。这是我使用的Xceed-Zip命令
Xceed.Zip.Licenser.LicenseKey = XceedZipKey;
Xceed.Zip.QuickZip.Zip(ZipFilePath, true, true, true, filesToZip);
ZipFilePath是最终zip的名称,包括创建zip的路径。所以它就像D:'MyData/MyZip.zip
。
而且,filesToZip类似于D:'MyDataToZip'Versions''*.*
。
因此,当创建zip时,我会看到一个MyDataToZip文件夹,其中包含Versions文件夹,然后是Version文件夹中的所有内容。
但是我希望zip不包含MyDataToZip&版本文件夹。它应该从"版本"文件夹开始。我怎样才能做到这一点?
请注意,我的应用程序是在.Net 4.0上构建的,所以我不能使用System.IO.Compression.
使用Xceed FileSystem API以保留从目标文件夹向下的文件路径。
public void ZipFolder(string zipFilePath, string folderPath, bool recursive, bool replaceExistingFiles, params object[] filters)
{
AbstractFile zipFile = new DiskFile(zipFilePath);
ZipArchive zip = new ZipArchive(zipFile);
using (AutoBatchUpdate batch = new AutoBatchUpdate(zip))
{
AbstractFolder sourceFolder = new DiskFolder(folderPath);
sourceFolder.CopyFilesTo(zip, recursive, replaceExistingFiles, filters);
}
}
您需要使用
Xceed.Zip.QuickZip.Zip(ZipFilePath, true, true, false, filesToZip);
因为第四个参数是:
preservePaths
布尔值,指示目录结构是否应保留在zip文件中。
REF:Zip(字符串,布尔,布尔,字符串[])方法