圧縮を解凍させるプログラムを作るには?


マグ  2004-06-17 17:23:17  No: 113979  IP: [192.*.*.*]

題名の通りですが・・・

圧縮したファイル(zip,lzh,cab)形式などのファイルを
解凍させるようにするにはどのようにプログラムを組めばいいのでしょうか?
初心者なのでどうすればいいか分かりません。
教えてください。

それと、できれば、ほぼ全て解凍できるようにするソースの記述も教えてください。

編集    削除
魔界の仮面弁士  2004-06-17 18:41:35  No: 113980  IP: [192.*.*.*]

言語がわからないので何とも言えませんが、コマンドライン指定可能な
解凍ツールを用意し、それを呼び出すのが手っ取り早いでしょう。
例えばLHAならLHA.EXE、Microsoft CainetならEXTRACT.EXEなどを。

プログラムで細かく操作したいなら、.NETであれば、
 ZIP: vjslib.dllに含まれる、ZipInputStreamクラス。
 cabinet: setupapi.dll の SetupIterateCabinet API関数。
などの手段があります。

LHA形式に関しては、日本独自形式という事もあり、対応する関数が
用意されていません。*.lzhの構造は公開されていますので、それに従って
バイナリで操作するか、もしくは、統合アーカイバプロジェクトの
UNLHA32.DLLなどに頼る事になるでしょう。

編集    削除
魔界の仮面弁士  2004-06-17 18:45:47  No: 113981  IP: [192.*.*.*]

*.cabに関しては、このあたりが参考になるかと思います。(VB6向け)
http://www.ftponline.com/archives/premier/mgznarch/vbpj/2000/11nov00/kg0011/kg0011.asp
http://www.thescarms.com/vbasic/CabExplorer.asp

編集    削除
マグ  2004-06-18 02:45:07  No: 113982  IP: [192.*.*.*]

すいません。
バージョンを書き忘れました。
VB.NETです。
そして、解凍などをさせるにはどのように記述すればいいか分かりません。
初心者なのでどうすればいいかも分からないんです。

編集    削除
マグ  2004-06-18 02:51:35  No: 113983  IP: [192.*.*.*]

さっきインターネットでZIPを解凍するソースを見つけたのですけれど
ソースがVB6みたいな感じがするので
どのようにすればVB.NETでも使えるようになるのですか?

まず、「参照の追加」でvjslib.dllを追加して、

zis = New java.util.zip.ZipInputStream(New java.io.FileInputStream(zipPath)) 
zis.getNextEntry() 

' バイト配列を確保 
ReDim buf(size) 
bis = New java.io.BufferedInputStream(zis) 

' 展開ファイル読込む 
realSize = bis.read(buf, 0, size) 

' 解凍ファイルをzipファイルと同じディレクトリに書込む 
keyName = zipPath.Substring(0, zipPath.LastIndexOf("\") + 1) & keyName 
fos = New java.io.FileOutputStream(keyName) 
fos.write(buf, 0, realSize) 
zis.closeEntry()

編集    削除