【问题标题】:Unzip file while reading it阅读时解压文件
【发布时间】:2010-07-03 07:03:25
【问题描述】:

我压缩了数百个 CSV 文件。这很棒,因为它们占用的空间很小,但是当需要使用它们时,我必须在我的 HD 上腾出一些空间并解压缩它们,然后才能进行处理。我想知道 .NET 是否可以在阅读文件时解压缩文件。换句话说,我想打开一个 zip 文件,开始解压缩文件,然后处理文件。

所以我的驱动器上不需要额外的空间。有什么想法或建议吗?

【问题讨论】:

    标签: c# compression c#-4.0 zip


    【解决方案1】:

    是的。 Zip 是一种流格式,这意味着您可以在解压缩时使用数据,而不必先解压缩所有内容。

    使用 .net 的 System.IO.Compression 类,您可以将 zip 文件(Deflate 和 GZip)中使用的类似压缩应用于您喜欢的任何流,但如果您想使用实际的 zip 格式文件,则需要第三个方库like this one (sharpziplib)。

    【讨论】:

      【解决方案2】:

      更好的解决方案可能是将文件解压缩在驱动器上,但在文件系统级别打开压缩。这样,您将只读取 CSV 文件,操作系统会确保它不会占用太多空间。

      Anyhoo,回答您的问题,也许GZipStream class 可以帮助您。

      【讨论】:

      • 好点!我虽然是这样,但我每周都会在 DVD 上获取文件......
      【解决方案3】:

      sharpziplib 允许基于流的解压缩 - 请参阅 this related question - item 提供类似的基于流的 Read 方法,因此您可以像处理任何流一样处理每个项目。

      【讨论】:

        【解决方案4】:

        我不确定 zip 文件,但您可以使用带有 GZipSteam 的 GZ 格式(与任何其他输入流一样工作)。不幸的是,整个 System.IO.Compression 命名空间只有 2 个类(另一个是 DEFLATE)。

        编辑:有一个名为ZipPackage 的类。我不确定它是否能让你进行解压流式传输,但它可能值得研究。

        另外,看看#ziplib

        【讨论】:

          猜你喜欢
          • 2016-11-30
          • 2012-05-18
          • 1970-01-01
          • 1970-01-01
          • 2011-06-17
          • 1970-01-01
          • 2018-06-05
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多