2010-07-03 105 views
3

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

因此,我的驱动器上不需要额外的空间。任何想法或建议?

回答

5

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

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

1

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

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

+0

好点!尽管如此,但我每周都会在DVD上获取文件... – Martin 2010-07-03 07:08:17

0

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

编辑:有一个类叫ZipPackage。我不知道如果它可以让你做解压缩流媒体,但它可能值得研究。

另外,请看#ziplib

1

sharpziplib允许基于流减压 - 见this related question - 在item提供类似的基于流的Read方法,这样你就可以像对待任何其他流处理每一个项目。