2010-07-03 113 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方法,這樣你就可以像對待任何其他流處理每一個項目。