C#SharpZipLib剥离不相关的目录名称

我正在使用SharpZipLib压缩包含子目录的文件夹,这很正常。 我想做的是剥离第一个子文件的父目录,以便不进行整个无关的结构……

例:

C:\ A \ B \ C \ d。\ E \˚F\克\ħ\ FILE1.TXT

C:\ A \ B \ C \ d。\ E \˚F\克\ħ\ FILE2.TXT

C:\ A \ B \ C \ d。\ E \˚F\克\ħ\ I \ FILE1.TXT

C:\ A \ B \ C \ d。\ E \˚F\克\ħ\ I \ FILE2.TXT

它应该像这样结束:

FILE1.TXT

FILE2.TXT

I \ FILE1.TXT

I \ FILE2.TXT

我怎样才能做到这一点?

这是我到目前为止的代码:

ZipFile zipFile = new ZipFile(destinationArchive); zipFile.BeginUpdate(); foreach (FileInfo file in sourceFiles) { zipFile.Add(file.FullName); } zipFile.CommitUpdate(); zipFile.Close(); 

请改用ZipOutputStream:

 string[] sourceFiles = new [] { @"c:\a\b\c\d\e\f\g\h\file1.txt", @"c:\a\b\c\d\e\f\g\h\i\file1.txt" }; FileStream fileStream = File.Create(@"c:\temp\test.zip"); ZipOutputStream zipOut = new ZipOutputStream(fileStream); string baseDir = @"c:\a\b\c\d\e\f\g\h\"; foreach (var sourceFile in sourceFiles) { ZipEntry entry = new ZipEntry(sourceFile.Replace(baseDir,"")); zipOut.PutNextEntry(entry); FileStream inFile = File.OpenRead(sourceFile); byte[] buffer = new byte[8192]; int bytesRead = 0; while ((bytesRead = inFile.Read(buffer, 0, buffer.Length)) > 0) { zipOut.Write(buffer,0,bytesRead); } zipOut.CloseEntry(); } zipOut.Close(); 

或者查看CodePlex for DotNetZip。