web-dev-qa-db-ja.com

サードパーティのdllを使用せずにdotnetframework4.0を使用してZipファイルを抽出する方法

修正中です。ネットワーク上の場所からZipファイルをダウンロードし、ローカルマシンで解凍して、ファイルを使用する必要があります。唯一の制約は、サードパーティのdllを使用できないことです。

15
Apurva Saxena

.NET Framework 4.5には、System.IO.Compression.ZipFile.ExtractToDirectory(String, String)メソッドがあります。

9
Ivan Ičin

VS2010でまだ利用できるかどうかはわかりませんが、以前のバージョンではJ#がVSに含まれ、J#はvjslib.dllにJava.util.Zipクラスを含み、VSの一部であるため、サードパーティではありません= DLLなので、そのようにできるかもしれません。

これを行う方法を示すCodeProjectの記事は次のとおりです。 J#ランタイムを使用してC#プログラムからZipおよびUnzipする

4
Hans Olsson

これを行う「良い」方法はありません。 Zipファイル構造および DeflateStream などのクラスで公開されている information を使用して、Zipアルゴリズムを自分で実装することもできます(ただし、 DEFLATEアルゴリズム)。 このブログ投稿 に可能な代替案に関する情報がいくつかありますが、短いバージョンでは、サードパーティのライブラリを使用するか、自分でライブラリを書き直す必要があります。

これがGPLの方法でソースコードをリリースできる状況である場合は、 SharpZipLib のようなプロジェクトからコードをコピーして貼り付け、それによって要件を回避することができます。 DLLを使用します。それ以外に、なぜサードパーティのDLLを使用できないのですか?

3
Ryan Mentley

.NET Framework自体は(現在)Zipファイルを公式にサポートしていません。他の人が指摘しているように、利用可能な高品質のサードパーティの無料ライブラリがいくつかあり、J#ランタイムはそれをサポートしています。

サードパーティのソリューションをお勧めしますが、それが絶対にできない場合は、もう1つのトリックがあります。 ZipPackage 、これはWPFの一部です。一種のZipファイル(追加のメタデータで拡張)をサポートし、ほとんどのZipファイルを読み取るのに十分に機能します。

2
Stephen Cleary

GZipStreamは、WCFデータ圧縮に最も一般的に使用されます。ここでは使用しないでください。

このZipライブラリを試して、ファイルに圧縮することができます。

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

0
Wojtek Turowicz

クイックグーグル検索はこれを見つけました。 GZipStreamクラスMSDNリファレンス

0
Adrian