2010-08-09 85 views
15

我正在修復中。我需要從網絡位置下載一個zip文件,然後在本地機器上解壓縮並使用這些文件。唯一的限制是我不能使用任何第三方DLL。如何在不使用第三方dll的情況下使用dotnet framework 4.0提取zip文件

+0

這看起來像這個問題的重複:http://stackoverflow.com/questions/836736/unzip-files-programmatically-in-net。 您可能想要查看更多的答案。 – Rich 2010-08-09 06:44:04

+2

爲什麼你不能使用任何第三方庫?這是一個愚蠢的要求...可能是由管理人員做出的;) – 2010-08-09 07:51:18

+0

這實際上是一個非常重要的要求,因爲缺乏.NET Framework對zips的支持增加了添加另一個dll的複雜性(並且安全問題是真實的,因爲如果你看看微軟的代碼盡職調查,它比大多數好得多) – 2012-07-04 14:42:24

回答

10

在.NET framework 4.5中現在有System.IO.Compression.ZipFile.ExtractToDirectory(String, String)方法。

+0

System.IO.Compression;) – tanathos 2013-02-11 14:48:32

+0

OOps,快速寫作...我會糾正它:) – 2013-02-12 10:51:10

+19

我喜歡這個問題是如何特別要求4.0解決方案和4.5回答被選中 – DontFretBrett 2014-06-26 20:30:57

0

快速谷歌搜索變成了這個。 GZipStream Class MSDN Reference

+5

「...但是,這個類本身並不提供添加文件或從.zip壓縮文件中提取文件的功能......」 – 2010-08-09 06:31:08

3

沒有「好」的方法來做到這一點。你可以使用公開的information在ZIP文件結構和類如DeflateStream上自己實現ZIP算法(儘管如果它沒有使用DEFLATE算法進行壓縮,它也可能不起作用)。有一些關於this blog post可能的替代方法的信息,但簡短的版本是,你將不得不使用第三方庫或自己重寫。

如果這種情況下您可以以GPL方式發佈源代碼,您可以將項目中的代碼複製粘貼到您自己的代碼中,從而避免使用DLL的要求。除此之外,爲什麼不能使用第三方DLL?

0

GZipStream最常用於WCF數據壓縮。不要在這裏使用。

你可以試試這個ZIP庫壓縮成文件:

http://www.icsharpcode.net/opensource/sharpziplib/

+2

這不會出現成爲一個WCF的問題,而GZipStream不會幫助ZIP文件,它通常使用DEFLATE算法。 – 2010-08-09 06:56:42

+0

你不明白我的帖子。我建議採用其他方法... – Turowicz 2010-08-09 11:31:47

+0

SharpZipLib將會失敗,並且unix主機系統會壓縮文件。例如,當在MacOSX機器上製作時,使用內部壓縮壓縮器 – Highmastdon 2013-04-24 10:19:32

4

我不知道它是否仍然可以在VS2010,但在早期版本的J#被列入VS和J#包括java.util.zip類,因爲它是VS的一部分,它不是第三方DLL,所以你可以這樣做。

這裏展示瞭如何做這CodeProject上的文章:Zip and Unzip from a C# program using J# runtime

+0

有趣的是,我不知道它在那裏...... – 2010-08-09 07:48:53

+0

請注意,J#不再隨.NET Framework一起提供,雖然它仍然隨VS2005- 2015年。對於某些人來說,這仍然是一個有效的解決方案。 https://social.msdn.microsoft.com/Forums/office/en-US/627b5ca3-fac7-461f-9e3a-824fd2a5eb32/problem-with-vjslibdll?forum=netfxbcl – ErikusMaximus 2017-11-01 20:57:12

2

在.NET框架本身不(目前)對ZIP文件的官方支持。正如其他人所指出的,有幾個高質量的第三方免費庫可供使用,並且J#運行時支持它。

我推薦第三方解決方案,但如果你絕對不能這樣做,那麼還有另外一招:ZipPackage,這是WPF的一部分。它支持ZIP文件(增加了額外的元數據),並且可以讀取大部分 ZIP文件。

相關問題