![](/img/trans.png)
[英]C# with SharpZipLib - Compatibility of SharpZipLib with Winzip and XP?
[英]C# SharpZipLib strips irrelevant directory names
我正在使用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。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.