このリンク:https://www.cnblogs.com/yifeixue/p/11769905.html
私は効果的なプロのテストされています(* ^▽^ *)
直接コードでADO、:
1 /// <まとめ> 2 /// 抽出ファイル 。3 /// </要約> 4 /// <PARAM NAME = "ZipPath"> ファイルを解凍する</ PARAM> 。5 /// <PARAM NAME = "パス"> 解凍後のファイルのパス</ PARAM> 6。 パブリック 文字列 UnzipTheFiles(文字 TorepotFiles、列reportPath) 7。 { 8。 文字列のエラー= NULL ; 9 ActionRetDto ActionRet = 新しい新しいActionRetDto(); 10 11。 ZipInputStream S = 新しいZipInputStream(File.OpenRead(TorepotFiles))。 12 13 またはZipEntry theEntry。 図14は、 お試し 15 { 16 ながら((theEntry = s.GetNextEntry())!= NULL ) 17 { 18 列 fileNameに= System.IO.Path.GetFileName(theEntry.Name)。 19 // 生成解压目录 20 Directory.CreateDirectory(reportPath)。 21 22 であれば(ファイル名は!= String.Emptyを) 23 { 24 //解压文件 25 のFileStreamのStreamWriter = File.Create(reportPath + filename)で。 26 27 のintサイズ= 2048 。 28 バイト []データ= 新しい バイト [ 2048 ]; 29 一方(真) 30 { 31 サイズ= s.Read(データ、0 、data.Length)。 32 であれば(サイズ> 0 ) 33 { 34 streamWriter.Write(データ、0 、サイズ)。 35 } 36 他の 37 { 38 39 streamWriter.Close()。 40 streamWriter.Dispose()。 41 ブレーク; 42 } 43 } 44 45 streamWriter.Close()。 46 streamWriter.Dispose()。 47 } 48 } 49 } 50 キャッチ(例外EX) 51 { 52 エラー= ErrorUtil.GetError(EX)。 53 ActionRet.Error = エラー。 54 スローEX。 55 } 56 最後に 57 { 58 S。CLOSE()。 59 s.Dispose()。 60 } 61 リターンreportPath。 62 }