直接从远程源解压缩zip文件

时间:2015-06-10 12:30:30

标签: c# zip sevenzipsharp

我想在Azure FileStorage上以zip格式存储一些数据。

SevenZipSharp(尤其是SevenZipExtractor类)可以使用https://myaccount.file.core.windows.net/shared1/folder1/data00054.zip之类的URL而不是本地文件吗?

我想从远程位置检索文件,在内存中解压缩,处理数据,然后清理内存。

1 个答案:

答案 0 :(得分:0)

即使没有像7zip这样的第三方库,你似乎也能做到这一点:

WebClient OpenRead会从您的URI中获取一个流,ZipArchive constructor from stream会从中获取ZipArchive:

var uri = @"https://myaccount.file.core.windows.net/shared1/folder1/data00054.zip";
var wc = new WebClient();

var stream = wc.OpenRead(uri);
var zip = new ZipArchive(stream);

根据需要使用-block。

如果您真的想要使用第三方库,可以找到文档(在本例中为源代码)here。如您所见,它也适用于任意流:

var uri = @"https://myaccount.file.core.windows.net/shared1/folder1/data00054.zip";
var wc = new WebClient();

var stream = wc.OpenRead(uri);
var extractor = new SevenZipExtractor(stream);