vb.netで圧縮、解凍するには?


マッグ  2004-07-09 13:26:02  No: 114680  IP: [192.*.*.*]

vb.netを使用しているのですがツールを使わずにプログラムコードで圧縮、解凍するにはどうしたらよいか教えてください。

編集 削除
Say  2004-07-10 01:37:59  No: 114681  IP: [192.*.*.*]

圧縮アルゴリズムの勉強をすればいいのでは?
ハフマンなりスライド辞書なりRLEなり、
自分で調べて気に入ったものを使えばいいのでは?
勿論、真似するのがいやなら、アルゴリズムそのものを
自己開発するのもアリかと。

非可逆でいいなら、再帰曲線で画像圧縮なんか
個人的に好きなネタですが。
うまくいけば、死ぬほど小さくなります。

編集 削除
魔界の仮面弁士  2004-07-10 11:04:47  No: 114682  IP: [192.*.*.*]

.NET Frameworkで、圧縮/展開をするなら、
J#のZipOutputStream/ZipInputStream/ZipEntryクラスが使えます。

編集 削除
マッグ  2004-07-13 08:34:00  No: 114683  IP: [192.*.*.*]

J#のZipOutputStream/ZipInputStream/ZipEntryクラスで作成したのですが、圧縮対象のファイルの更新日時が取得できませんでした。setTimeを使ってもうまくいかなかったです。何かいい方法ないですか?

編集 削除
すー  2004-07-14 22:29:18  No: 114684  IP: [192.*.*.*]

マッグさん。
同じような質問をしていたすーといいます。
そこで解決できたので。

①まず、zip32j.dllとzip32.dllをどこかから落としてくる。
  Vectorとか
②上記dllをexeと同じディレクトリ、もしくは環境変数のPathが通ってるところ(通常はsystem32以下かな)に置く。

==============================
Public Declare Function Zip Lib "Zip32j" _
              (ByVal hWnd As Integer,_
              ByVal szCmdLine As String,_
              ByVal szOutPut As String,_
              ByVal dwsize As Integer) As Integer
==============================
を宣言

あとは、zip()を呼び出すだけです。
ちなみに圧縮だけなら、コマンドライン引数(szCmdLine)につけるオプションは "-r" だけでよいかと。

宣言して使用できる関数については、
http://www.geocities.co.jp/SiliconValley-SanJose/1892/pc/archive.html
で、簡単にわかるようになっています。

編集 削除
マッグ  2004-08-05 08:29:56  No: 114685  IP: [192.*.*.*]

すいません。かなり返事遅くなりました。みなさん解答ありがとうございます。みなさんの意見を参考にがんばってやってみたいと思います。また困ったときはよろしくお願いします。

編集 削除