此问题类似于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*/);
}
}