Top > プログラミング > .NET Tips> J#のライブラリを使ってZIP圧縮、展開(解凍)、リスト表示を行う

J#のライブラリを使ってZIP圧縮、展開(解凍)、リスト表示を行う」への評価、コメント

評価

良い / 悪い = 35 / 4 (「良い」の割合 = 0.897 , 人気度 = 1.427

評価する

コメント一覧


通常のコメント
匿名 2022/01/7 (Fri) 12:14:11
大変わかりやすく有用な記事をありがとうございます。

今後こちらの記事をご参考いただく方に向けて念のためコメントさせていただきます。
現在、 Microsoft Visual J# Version 2.0 のサポートはすでに終了しています。
https://docs.microsoft.com/ja-jp/lifecycle/products/microsoft-visual-j-version-20-redistributable-package

そのため、 Zip ファイルを扱う場合には、何件かのコメントにもある .NET Framework の System.IO.Compression 名前空間内の Zip ファイル関連のクラスを利用する方が安心かなと思います。
https://docs.microsoft.com/en-us/dotnet/api/system.io.compression
管理人様より以下の素晴らしい記事もありました。
https://dobon.net/vb/dotnet/file/zipfile.html

評価の理由
匿名 2016/08/5 (Fri) 13:54:48
評価:良い
管理者様、ご多忙のところとは存じますが、もしよろしければ .NET Framework 4.5 より追加されました、 System.IO.Compression.ZipFile についてご教授いただければ幸いです。

通常のコメント
kazu 2016/04/28 (Thu) 20:15:11
開発環境以外だけでなく動作環境にもMicrosoft Visual J# 再頒布可能パッケージ(以下パッケージ)をインストールする必要があるようです。
パッケージがない環境にvjslib.dllを配布するのはライセンス違反となるそうです。
下記のサイトを参考にコメントさせて頂きました。
Zip圧縮にJ#のDllを使う時はライセンスに気をつけよう - プログラマーな日々 http://blog.jhashimoto.net/entry/20110613/1307938219

通常のコメント
匿名 2015/04/11 (Sat) 11:58:05
4.5からZipFileクラスが提供されましたね

評価の理由
kanz708 2012/01/9 (Mon) 14:13:57
評価:良い
おかげさまで、
ZIPが出来ました!

評価の理由
jiji 2011/08/9 (Tue) 10:22:52
評価:良い
DotNetZipを使ってましたが、.NET Frameworkにあるこちらのほうがいいですね。
情報ありがとうございます。

通常のコメント
泣きそう 2010/02/10 (Wed) 15:51:18
解凍時にCRCがでて解凍できないです

評価の理由
匿名 2009/09/14 (Mon) 20:39:11
評価:良い
すばらしいです。

評価の理由
nyaku 2009/07/9 (Thu) 14:35:09
評価:良い
感謝です!

通常のコメント
匿名 2009/05/31 (Sun) 16:28:54
パスワード付き圧縮について...
SharpZipLib 利用時に ZipEntry の CompressedSize に圧縮後のサイズを設定しないと、展開時にパスワードエラーで正常に展開できないようです。
参考:http://kamiyn.spaces.live.com/Blog/cns!5BB0A706A97A84BA!6241.entry
に指摘あり!!
サイズ設定による、圧縮、パスワード付与での正常動作が確認できました。

通常のコメント
siitake 2009/02/13 (Fri) 07:15:35
>管理人さん
大変助かりました。
簡単な質問をしてしまい申し訳ありません。
本当にありがとうございました。

通常のコメント
管理人 2009/02/12 (Thu) 02:45:08
> コードの中にbuffer(8191)とありますが、この「8191」が書かれている意味は何かあるのでしょうか。

切がよさそう(8x1024)ということ以外に意味はありません。いろいろな大きさで試してみて、適当なサイズを調べた方が良いかもしれません。

通常のコメント
siitake 2009/02/11 (Wed) 11:54:16
圧縮のコードを参考にさせていただきました。

コードの中にbuffer(8191)とありますが、この「8191」が書かれている意味は何かあるのでしょうか。
基礎的な質問だったら申し訳ないのですが、プログラミング苦手なので、よろしければどなたか教えていただけると助かります。

評価の理由
おぎわら 2009/01/19 (Mon) 18:03:50
評価:良い
2009/1/19 現在の情報です。
VistaのVS2008からでも動作しました。
vjslib.dllのバージョンはv2.0.50727でした。
日本語もばっちりです!(^0^)

通常のコメント
tom 2008/11/25 (Tue) 19:08:48
ziplibを使用する方法で
パスワード付の圧縮ファイルを解凍しようとするとパスワードが間違っている旨のエラーが出て解凍出来ません。なぜだか分かりますでしょうか?
(パスワード無しだとそのまま解凍できるのですが)
デバッグモードで実行すると
zos.Close();実行後
LengthでSystem.ObjectDisposedExceptionの例外がスローしました。
の例外が表示されてるようです。

通常のコメント
なっちゃん 2008/11/22 (Sat) 17:27:36
ICSHARPの方を使って圧縮をasp.netで作成しています。
ここに書かれているソースを参考にしながらやっており、圧縮でき、エクスプローラで確認したところ正常に圧縮されてました(bufferサイズを1引くところはバグが出ました)が、別なところで解凍すると、うまく解凍できませんでした。そこでzipファイルの解析したところサイズはokでしたが、圧縮したサイズがおかしな数字(例えば11とか)になってました。情報表示でも一つ目のファイルだけ表示して2つめ以降がエラーになります。圧縮サイズはセットするものなのでしょうか、またICSHARPおバグなのでしょうか?
よろしくお願いします。

通常のコメント
konda 2008/10/24 (Fri) 15:33:32
>旅がらすさん

アドバイスありがとうございます。
いろいろ調査しましたが、新たに追加された
FastZipクラスの
CreateZipとExtractZipを使用しました。
こちらのほうが、簡単ですね。
サンプルの方のエラー原因は結局調査しませんでした。
ありがとうございました。

通常のコメント
旅がらす 2008/10/17 (Fri) 12:52:10
>kondaさん

私も同じ事象にぶつかりました。

圧縮解凍ツールで圧縮したものをプログラムで解凍したり、
プログラムで圧縮したものをツールで解凍するのは大丈夫なのですが、
プログラムで圧縮したものをプログラムで解凍しようとすると
同種のエラーが出てしまいました。

ネットでいろいろと調べてみましたが、
どのサンプルを見ても変わらず、
かといってDLLの内部を修正するのも面倒だったので
FastZipクラスのCreateZipとExtractZip関数で対応しました。
これはエラーになりません。

私もサンプルのどこがいけないのか知りたいですね。

通常のコメント
konda 2008/10/12 (Sun) 18:06:34
#zlibを使用したサンプルを動かしてみましたが

VB.NET版

'書庫内のファイルを展開するのサンプルで

len = zis.Read(buffer, 0, buffer.Length)の箇所でエラーになってしまいます。

エラー内容は
ZipExceptionはハンドルされませんでした

Size mismatch:429467295;63<->58;63

と表示しています。


圧縮は同じサンプルの
書庫を作成(圧縮)する
を使用し、一部 
Dim buffer(fs.Length) As Byteを
Dim buffer(fs.Length -1) As Byteにしてみたりもしました。
(上記のコメントで修正してる記事がありましたので)

すいませんが、どこを修正すれば書庫データを展開できるようになるのか

教えていただいきたいと思います。

よろしくお願いいたします。

通常のコメント
旅がらす 2008/09/30 (Tue) 15:30:33
SharpZipLibで新たに追加されたFastZipクラスの
CreateZipとExtractZipを使えば、
圧縮解凍処理が数行で済みますよ。

通常のコメント
p54c 2008/08/23 (Sat) 06:32:59
とても参考になりました。ありがとうございました。

#ziplibを使用した圧縮VB.NET版で1箇所修正。
> Dim buffer(fs.Length) As Byte
→Dim buffer(fs.Length - 1) As Byte

通常のコメント
トモ 2008/07/2 (Wed) 12:27:13
大変参考にさせていただいております。
しかしながら外部ライブラリを用いずにZIPを解凍のみしたいと考えていましたところ、標準ライブラリであるSHELL32を用いた下記の様な手法がございましたので展開させていただきます。
※VistaではUNZIPコマンドも存在しない為、
 zipfldr.dllは使い勝手がよろしくない為参っていました

Shell32.dllを参照追加した上で
Shell32.ShellClass sc = new Shell32.ShellClass();
Shell32.Folder srcFlder = sc.NameSpace(zipFileName);
Shell32.Folder destFlder = sc.NameSpace(unzippedDirectory);
Shell32.FolderItems items = srcFlder.Items();
destFlder.CopyHere(items, 20);

参考:http://forums.msdn.microsoft.com/ja-JP/netfxbcl/thread/845f358f-02a8-444c-9d9f-dd8348cd5d88/

評価の理由
おしりかじりむし 2007/10/30 (Tue) 16:12:14
評価:良い
Sampleが豊富

通常のコメント
sinh 2006/10/24 (Tue) 12:52:35
サンプルを参考にされていただいたのですが、WindowXPのCompressed Folderから開いてもファイルが表示されませんでした。ZipEntry#CleanNameが必要だと思うのですが...。

評価の理由
niiko 2006/04/11 (Tue) 15:44:10
評価:良い
いまいち使用法がわからなかったvjslibの使用法が理解できた。サンプルコードもわかりやすく丁寧である。ありがとうございました。

コメントの投稿

[説明]