在阅读时解压缩文件

时间:2010-07-03 07:03:26

标签: c# compression c#-4.0 zip

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

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

4 个答案:

答案 0 :(得分:5)

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

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

答案 1 :(得分:1)

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

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

答案 2 :(得分:1)

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

答案 3 :(得分:0)

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

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

另外,请查看#ziplib