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


マグ  2004-06-17 17:23:17  No: 113979

題名の通りですが・・・

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

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


魔界の仮面弁士  2004-06-17 18:41:35  No: 113980

言語がわからないので何とも言えませんが、コマンドライン指定可能な
解凍ツールを用意し、それを呼び出すのが手っ取り早いでしょう。
例えば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

*.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

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


マグ  2004-06-18 02:51:35  No: 113983

さっきインターネットで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()


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加