读取zip存档中包含的文件的一部分

时间:2017-06-08 10:18:18

标签: c# zip

此问题类似于How to read data from a zip file without having to unzip the entire file,除了我想进一步阅读文件的一部分,即获取文件流,并寻找我知道的位置以字节为单位的偏我不知道zip格式是否允许这样做。

我试图在ZipArchive.Entries [...]返回的流中寻找。打开(),但它会抛出,说操作不受支持。

我当然可以阅读(并丢弃)内容直到我感兴趣的地方,但这对于大文件来说速度很慢。

编辑:一个清楚我要做的事情的例子:

我们说我有一个包含多个文件的文件archive.zip,其中一个是bigfile.bin。我已经知道如何在不解压缩bigfile.bin的其他文件的情况下解压缩archive.zip,没问题。我的问题是:我可以跳过10 000 000字节的bigfile.bin并开始阅读剩下的内容吗?当然,这些10 000 000字节将在解压缩流中进行测量。

using (var archive = new ZipArchive("archive.zip"))
{
    using (var data = archive.Entries.Single(e => e.Name == "bigfile.bin").Open())
    {
        data.Seek(10000000, SeekOrigin.Begin); // this is what I want to do but it doesn't work
        data.Read(/*etc*/);
    }
}

0 个答案:

没有答案