阅读时解压缩文件

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

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

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

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

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

Anyhoo,为了回答你的问题,也许GZipStream类可以帮助你。

sharpziplib允许基于流的解压缩 – 请参阅此相关问题 – 该项提供类似的基于流的Read方法,因此您可以像处理任何流一样处理每个项目。

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

编辑:有一个名为ZipPackage的类。 我不知道如果它会让你做减压流媒体,但它可能值得研究。

另外,看看#ziplib 。