2017-06-21 5 views
1

.netフレームワーク内の新しい場所に解凍しないでファイルを解凍(.zip)する方法はありますか?具体的には、filename.csv.zipをDataTableに読み込もうとしています。 私は.extractToDirectory(ZipArchiveの中にあります)を認識していますが、C#のオブジェクトにそれを抽出したいだけです。新しいファイルを作成したくないです。 サードパーティライブラリを使用してこれを行うことができるように願っていますが、私が得ることができるものを取り上げます。私はこれをテストしたことがないので新しい場所に展開せずにC#で.zipファイルを解凍する方法

+0

ZipArchiveEntry.Open()は、Zipアーカイブエントリの圧縮解除されたデータを読み取ることを可能にするStreamオブジェクトを提供します。 – elgonzo

答えて

1

は、いくつかのバグかもしれないが、ここに行く:

List<byte[]> urmom = new List<byte[]>(); 
using (ZipArchive archive = ZipFile.OpenRead(zipPath)) 
    foreach (ZipArchiveEntry entry in archive.Entries) 
     using (StreamReader r = new StreamReader(entry.Open())) 
       urmom.Add(r.ReadToEnd(entry)); 

基本的には各エントリを反復処理するZIPARCHIVEのopenreadクラスを使用します。この時点で、ストリームリーダを使用して各エントリを読み取ることができます。ストリームからファイルを作成し、必要に応じてファイル名を読むこともできます。私のコードはこれをしません、私の一部には怠惰のビット。

関連する問題