如何使用DotNetZip动态提取ZIP文件?

时间:2012-07-11 07:51:59

标签: c# azure stream zip dotnetzip

在我的Windows Azure代码中,我想从Blob Storage下载ZIP文件并动态解压缩并将解压缩的内容存储到磁盘。这样我就首先将文件写入磁盘,然后在进行提取时读取它。

我正在尝试使用DotNetZip。

ZIP文件最初非常大,所以它被分割成碎片(不是多部分存档,而是普通的ZIP存档,只是切成较小的文件),每个部分都被上传到Blob存储中。我知道如何遍历所有部分并在需要时打开每个blob

Azure SDK的CloudBlob.OpenRead()返回Stream后代。

DotNetZip有ZipInputStream个类,其构造函数接受Stream

如何将这些碎片连接在一起,以便我可以逐个下载ZIP文件并立即提取它们?

1 个答案:

答案 0 :(得分:0)

创建您自己的流类,该类将根据其位置从相应的CloudBlob返回数据。

然后将此类用作ZipInputStream的输入流。

public sealed class ZipBlobStream : Stream
{
...

http://msdn.microsoft.com/library/system.io.stream.aspx