使用sharpziplib将两个不同的zip文件解压缩到同一目录

时间:2012-07-16 19:31:51

标签: c# file unzip sharpziplib

我已经环顾四周,似乎没有关于使用sharpziplib将多个zip文件提取到同一目录的任何信息。我正在使用telerik控件RadUpload上传两个不同的zip文件夹,上传时它们会自动解压缩到一个与zip同名的文件夹中。

例如: 我有autocorrect.zip和entertainment.zip。自动更正提取到名为“自动更正”的文件夹,娱乐提取到名为“娱乐”的文件夹。自动更正在第一个框中,娱乐在第二个框中。

但在提取文件夹中只显示“娱乐”。现在我认为这是因为我当前设置解压缩方法的方​​式,因为它接受第一个值“自动更正”,然后它也将“娱乐”作为第一个值,因此“自动更正”不再列出被提取

如果您认为我的代码的其他部分有帮助请说明我会发布更多内容,这是解压缩方法的代码:

public static void UnZip(string sourcePath, string targetPath)
{
    //Creates instance of fastzip from library ICSharpCode
    ICSharpCode.SharpZipLib.Zip.FastZip fz = new FastZip();
    //Extracts zip from sourcePath to target path which is chosen in the button click methods
    fz.ExtractZip(sourcePath, targetPath, "");
}

编辑: 这是按钮方法,它使用zip文件的保存路径调用解压缩并保存提取的拉链的路径(忘了说它适用于一个拉链但不适用于多个拉链)

 protected void SubmitButton_Click(object sender, EventArgs e)
    {
        //Gets the name of the file being uploaded
        foreach (UploadedFile file in RadUpload1.UploadedFiles)
        {
            fileName = file.GetName();
        }
        //Path where zip files are uploaded
        String savePath = @"C:\Users\James\Documents\Visual Studio 2012\WebSites\CourseImport\CourseTelerik\";
        //Adds name of uploaded file onto end of saved path
        savePath += fileName;
        //Path where the extracted files from the uploaded zip are placed
        String unZipPath = @"C:\Users\James\Documents\Visual Studio 2012\WebSites\CourseImport\CourseTelerikExtract\";
        unZipPath += fileName;
        //Runs unzipping method
        UnZip(savePath, unZipPath);

2 个答案:

答案 0 :(得分:2)

您的方法只是获取最后一个fileName并仅调用一次UnZip

因此,以下代码将调用RadUpload1.UploadedFiles中可用的fileName总数

protected void SubmitButton_Click(object sender, EventArgs e)
{

String savePath = @"C:\Users\James\Documents\Visual Studio 2012\WebSites\CourseImport\CourseTelerik\";

String unZipPath = @"C:\Users\James\Documents\Visual Studio 2012\WebSites\CourseImport\CourseTelerikExtract\";


foreach (UploadedFile file in RadUpload1.UploadedFiles)
{
   string fileName = file.GetName();

   UnZip((savePath + fileName),  (unZipPath + fileName) );
}

}

答案 1 :(得分:0)

检查一下并尝试使用示例::

http://wiki.sharpdevelop.net/SharpZipLib-Zip-Samples.ashx

检查一下并尝试使用此示例: 解压缩Zip并完全控制操作