我用下面的代碼片段通過Ionic.zip
使ZIP文件夾:如果 :防止DotNetZip創建額外的文件夾
string lastFolder = packageSpec.FolderPath.Split('\\')[packageSpec.FolderPath.Split('\\').Length - 1];
string zipRoot = packageSpec.FolderPath + "\\Zip" + lastFolder;
string fileName = zipRoot + "\\" + lastFolder + ".zip";
Logging.Log(LoggingMode.Prompt, "Spliting to zip part...");
if (!Directory.Exists(zipRoot))
Directory.CreateDirectory(zipRoot);
ZipFile zip = new ZipFile();
zip.AddDirectory(packageSpec.FolderPath, zipRoot);
zip.MaxOutputSegmentSize = 200 * 1024 * 1024; // 200 MB segments
zip.Save(fileName);
它工作正常創建多個zip一部分,但讓意外嵌套的文件夾,如下以下遞減變量是:
FolderPath = C:\MSR\Temp\Export_1
zipRoot = C:\MSR\Temp\Export_1\ZipExport_1
fileName= C:\MSR\Temp\Export_1\ZipExport_1\Export_1.zip
我的來源是像下面的圖片:
1是我的源文件夾與它的工作人員來壓縮
2-是壓縮文件夾中包含1 zip.AddDirectory(packageSpec.FolderPath, zipRoot);
但我結束於:
因此這些文件夾MSR->Temp->Export_1->ZipExport_1->ZipExport1
是extera,這意味着Export_1.zip應該有直接源文件夾而不是嵌套的額外文件夾。
有沒有人知道我可以如何更改該代碼段來做到這一點?
在此先感謝。
謝謝,漂亮的修正,這是我的目標非常接近,但仍創造拉鍊版文件夾一個額外的文件夾,這樣你就可以告訴我如何糾正這種並給予一定的解釋,爲什麼這是發生? – Aria
使用帶有單個參數的函數:'zip.AddDirectory(packageSpec。FolderPath);',更新的答案@Aria – Tatranskymedved
好吧,我是'Ionic.Zip'的新手,無論如何感謝您的幫助我明白了。 @Tatranskymedved – Aria