繁体   English   中英

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

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM