Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/video/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# Ziparchive解包多部分zipfile_C#_Zip - Fatal编程技术网

C# Ziparchive解包多部分zipfile

C# Ziparchive解包多部分zipfile,c#,zip,C#,Zip,我想通过ZipArchive解压一个多部分zipfile。解压一个“独立”zipfile是可行的,但如果我试图解压第一个文件,它只会抛出一个错误。它在windows资源管理器中是这样工作的(只需解压缩第一个文件),所以我猜它可能会工作,因为我在网上找不到任何其他方法 using (ZipArchive archive = new ZipArchive(fs)) { archive.ExtractToDirectory(tempLocation, true); } 但是,也许这是一个简单

我想通过ZipArchive解压一个多部分zipfile。解压一个“独立”zipfile是可行的,但如果我试图解压第一个文件,它只会抛出一个错误。它在windows资源管理器中是这样工作的(只需解压缩第一个文件),所以我猜它可能会工作,因为我在网上找不到任何其他方法

using (ZipArchive archive = new ZipArchive(fs)) {
    archive.ExtractToDirectory(tempLocation, true);
}
但是,也许这是一个简单的方法,所以我用它来简化chunkedfile下载。我们将其用于updateservice,它下载更新的内容。为了有点灵活性,我们将使用(多部分)zipfiles。如果这是错误的方法,请告诉我

编辑:在发现第一个错误是“不支持拆分或扩展存档”之后,我得到了一个错误


还有其他Zipfile库支持它吗

我建议使用DotNetZip来完成您想要的任务

首先,必须将所有“.zip.001”、“zip.002”、“zip.003”文件合并为一个大文件,然后按照正常方式继续解压缩:

        string destFileName = @"C:\Temp\zip\finalHugeFile.zip";
        List<string> myMultiPartZip00xFiles = System.IO.Directory.GetFiles(@"C:\Temp\zip", "*.zip.*").ToList();

        using (Stream destStream = File.OpenWrite(destFileName))
        {
            foreach (string srcFileName in myMultiPartZip00xFiles)
            {
                using (Stream srcStream = File.OpenRead(srcFileName))
                {
                    srcStream.CopyTo(destStream);
                }
            }
        }

        // we extract here
        using (ZipFile zip = ZipFile.Read(destFileName))
        {
            foreach (ZipEntry entry in zip)
            {
                entry.Extract(@"C:\Temp\zip", ExtractExistingFileAction.OverwriteSilently);
            }
        }
string destFileName=@“C:\Temp\zip\finalHugeFile.zip”;
列出myMultiPartZip00xFiles=System.IO.Directory.GetFiles(@“C:\Temp\zip”,“*.zip.*).ToList();
使用(Stream destStream=File.OpenWrite(destFileName))
{
foreach(myMultiPartZip00xFiles中的字符串srcFileName)
{
使用(Stream srcStream=File.OpenRead(srcFileName))
{
srcStream.CopyTo(destStream);
}
}
}
//我们在这里提取
使用(ZipFile zip=ZipFile.Read(destFileName))
{
foreach(Zippentry条目在zip中)
{
Extract(@“C:\Temp\zip”,ExtractExistingFileAction.Overwritesilenly);
}
}

我建议使用DotNetZip来完成您想要的任务

首先,必须将所有“.zip.001”、“zip.002”、“zip.003”文件合并为一个大文件,然后按照正常方式继续解压缩:

        string destFileName = @"C:\Temp\zip\finalHugeFile.zip";
        List<string> myMultiPartZip00xFiles = System.IO.Directory.GetFiles(@"C:\Temp\zip", "*.zip.*").ToList();

        using (Stream destStream = File.OpenWrite(destFileName))
        {
            foreach (string srcFileName in myMultiPartZip00xFiles)
            {
                using (Stream srcStream = File.OpenRead(srcFileName))
                {
                    srcStream.CopyTo(destStream);
                }
            }
        }

        // we extract here
        using (ZipFile zip = ZipFile.Read(destFileName))
        {
            foreach (ZipEntry entry in zip)
            {
                entry.Extract(@"C:\Temp\zip", ExtractExistingFileAction.OverwriteSilently);
            }
        }
string destFileName=@“C:\Temp\zip\finalHugeFile.zip”;
列出myMultiPartZip00xFiles=System.IO.Directory.GetFiles(@“C:\Temp\zip”,“*.zip.*).ToList();
使用(Stream destStream=File.OpenWrite(destFileName))
{
foreach(myMultiPartZip00xFiles中的字符串srcFileName)
{
使用(Stream srcStream=File.OpenRead(srcFileName))
{
srcStream.CopyTo(destStream);
}
}
}
//我们在这里提取
使用(ZipFile zip=ZipFile.Read(destFileName))
{
foreach(Zippentry条目在zip中)
{
Extract(@“C:\Temp\zip”,ExtractExistingFileAction.Overwritesilenly);
}
}