.net - 使用 SharpZipLib 解压缩特定文件?

标签 .net compression sharpziplib

我正在尝试使用 SharpZipLib 从 zip 存档中提取指定的文件。我见过的所有示例都希望您解压缩整个 zip,然后执行以下操作:

       FileStream fileStreamIn = new FileStream (sourcePath, FileMode.Open, FileAccess.Read);

        ZipInputStream zipInStream = new ZipInputStream(fileStreamIn);
        ZipEntry entry;

        while (entry = zipInStream.GetNextEntry() != null)
        {
            // Unzip file
        }

我想做的是:
ZipEntry entry = zipInStream.SeekToFile("FileName");

因为我的需要涉及使用 zip 作为包,并且只根据需要将文件抓取到内存中。

有人熟悉SharpZipLib吗?有谁知道我是否可以在不用手穿过整个 zipper 的情况下做到这一点?

最佳答案

ZipFile.GetEntry 应该可以解决问题:

using (var fs = new FileStream(sourcePath, FileMode.Open, FileAccess.Read))
using (var zf = new ZipFile(fs)) {
   var ze = zf.GetEntry(fileName);
   if (ze == null) {
      throw new ArgumentException(fileName, "not found in Zip");
   }

   using (var s = zf.GetInputStream(ze)) {
      // do something with ZipInputStream
   }
}

关于.net - 使用 SharpZipLib 解压缩特定文件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/328343/

相关文章:

c# - 单击按钮时在表单之间传递变量

c# - GZip 或 Deflate 用于 HTTP 压缩

python - 使用 zlib 以 C 语言读取 Python 压缩数据

c# - SharpZipLib 无法使用 StreamWriter 将文本写入新创建的 csv 文件

c# - PHP => 膨胀来自 C# SharpZipLib 的 GZipped 字符串?

c# - 使用通用 LINQ 表达式调用 Contains 方法的忽略大小写

c# - 导入 Excel 工作表并通过松散耦合验证导入的数据

c# - 我应该在哪里放置接口(interface)和实现

java - 如何使 Ant 任务对我的所有 JAR 文件进行签名和打包?

c# - 压缩后删除原文件