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