[英]C# SharpZipLib strips irrelevant directory names
I am using SharpZipLib to zip up a folder with subdirectories and this is working fine. 我正在使用SharpZipLib压缩包含子目录的文件夹,这很好用。 What I would like to do is strip off the parents directories of the first child file so the whole structure that is irrelevant isn't carried forth... 我想要做的是剥离第一个子文件的父目录,以便不进行整个无关的结构......
Example: 例:
c:\\a\\b\\c\\d\\e\\f\\g\\h\\file1.txt C:\\ A \\ B \\ C \\ d。\\ E \\˚F\\克\\ħ\\ FILE1.TXT
c:\\a\\b\\c\\d\\e\\f\\g\\h\\file2.txt C:\\ A \\ B \\ C \\ d。\\ E \\˚F\\克\\ħ\\ FILE2.TXT
c:\\a\\b\\c\\d\\e\\f\\g\\h\\i\\file1.txt C:\\ A \\ B \\ C \\ d。\\ E \\˚F\\克\\ħ\\ I \\ FILE1.TXT
c:\\a\\b\\c\\d\\e\\f\\g\\h\\i\\file2.txt C:\\ A \\ B \\ C \\ d。\\ E \\˚F\\克\\ħ\\ I \\ FILE2.TXT
It should end up like this: 它应该像这样结束:
file1.txt FILE1.TXT
file2.txt FILE2.TXT
i\\file1.txt I \\ FILE1.TXT
i\\file2.txt I \\ FILE2.TXT
How can I do this? 我怎样才能做到这一点?
Here is the code I have so far: 这是我到目前为止的代码:
ZipFile zipFile = new ZipFile(destinationArchive);
zipFile.BeginUpdate();
foreach (FileInfo file in sourceFiles)
{
zipFile.Add(file.FullName);
}
zipFile.CommitUpdate();
zipFile.Close();
Use ZipOutputStream instead: 请改用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.