- PR -

圧縮ツールソフトで圧縮した物をJAVAので解凍は出来ますか?

投稿者投稿内容
くり
会議室デビュー日: 2004/02/29
投稿数: 9
投稿日時: 2004-02-29 19:05
よろしくお願いします。

ZipOutputStreamで圧縮した物をZipInputStreamで解凍すると言うことはできたのですが、
ベクターなどにあるソフトを使い圧縮したファイルを
JAVAのZipInputStreamで解凍することが出来ません。

JAVAを使い上記ツールで作成された圧縮ファイルを解凍する方法はあるのでしょうか?

何か知っている方おりましたらお願いします。


Gio
ぬし
会議室デビュー日: 2003/11/28
投稿数: 350
お住まい・勤務地: 都内から横浜の間に少量発生中
投稿日時: 2004-02-29 19:56
java.util.zip.GZIPInputStream, GZIPOutputStream クラスもあります。
これは GNU Zip 形式の圧縮と伸張を行うクラスです。

「ベクターなどにあるソフト」では圧縮形式が特定できませんが、LHA 等の Lempel-Ziv 系の圧縮方法でしたら、山崎敏氏と奥村晴彦氏の共著による「LHAとZIP - 圧縮アルゴリズム×プログラミング入門」(ソフトバンクパブリッシング刊)が参考になると思います。

他のツールで圧縮形式がわからない場合は、java.lang.Process オブジェクトを経由してそのツールを直接起動してしまう方法もあります。(若干乱暴な気がしますが

# 蛇足: 同じタイトルでもう一つトピックを作られていますが、そちらを削除しておいていただけるとスレッド一覧を眺める時に助かります。
くり
会議室デビュー日: 2004/02/29
投稿数: 9
投稿日時: 2004-03-01 15:05
2重投稿していたようなので一つにまとめさせていただきます。
シュン(常連さん)返信いただいたのに申し訳ないです。
---------------------------
シュン(常連さん)が返信くださいました。
会議室デビュー日: 2004/01/06
投稿数: 33
投稿日時: 2004-03-01 11:01

確かめていないのですが、確かJavaのZipパッケージは、書庫ファイルの
エントリのファイル名がUTF-8であると決めうちで操作を行っていたような
覚えが有ります。
ネイティブのツールで圧縮した際に、ファイル名にネイティブエンコードの
ASCII領域以外の文字が含まれていた場合、解凍作業できないかもしれません。

そのあたりを調べてみてはいかがでしょうか。
くり
会議室デビュー日: 2004/02/29
投稿数: 9
投稿日時: 2004-03-01 15:08
シュンさんへの返事です。
-------------------------------------
早速のご返答有難う御座います。

プログラミングをはじめて間が無いため、
せっかくお返事いただいた内容も全て理解しきれませんでした。

ファイルの圧縮形式が違うということなんでしょうか?

お返事いただいた内容でもう少し調べてみたいと思います。
ありがとう御座いました。
くり
会議室デビュー日: 2004/02/29
投稿数: 9
投稿日時: 2004-03-01 15:20
Gio(ベテラン)さんに返信です。
---------------------------------------------
お世話になります、ご返信有難う御座います。。

2重投稿を気が付かずご迷惑をおかけしました。

質問しておきながら詳しい状況を書かずお手を煩わせたことをお詫びします。

圧縮されているファイルですが、VBとunlha32.dllを使い圧縮しました。
作成者は他の人で、現在僕自身そのソースを手元においていないためソースは表記できません。
圧縮はベクターのツールではなかったようです。

VBで動かしていたプログラムを、JAVAで作り変えるという作業でこの問題に当たりました。

> 他のツールで圧縮形式がわからない場合は、
> java.lang.Process オブジェクトを経由して
> そのツールを直接起動してしまう方法もあります。

JAVAを始めて日が浅いため、java.lang.Processというものは知りませんでした。
一度調べてまた掲示板の方に書き込まさせていただきます。
unibon
ぬし
会議室デビュー日: 2002/08/22
投稿数: 1532
お住まい・勤務地: 美人谷        良回答(20pt)
投稿日時: 2004-03-01 15:23
unibon です。こんにちわ。

とりあえず、目的とする圧縮ファイルが、JDK(J2SE SDK) に付属の jar で解凍できるかを試すと良いです。jar が使えるのならば自前のプログラムから圧縮関連の API を呼ぶだけで大丈夫な可能性が高いです。jar でダメだと望み薄です。

ただし、jar でできる・できないからといっても、それが直接、自前のプログラムでの実現可能性には必ずしも結びつかないので、その点はご注意ください。
ちなみに jar は sun.tools.jar パッケージにあります。ソースコードは標準では付属しませんが
http://wwws.sun.com/software/communitysource/j2se/java2/download.html
でライセンスを結べばその契約のもとでソースコードをダウンロードできます。
くり
会議室デビュー日: 2004/02/29
投稿数: 9
投稿日時: 2004-03-01 15:43
unibon(ぬし)さんに返信です。
----------------------------------
ご返信、旧スレッドの案内を書いていただき有難う御座います。

小生の力量不足でご返信いただいた内容が理解することができません。
本当に申し訳ありません。

> とりあえず、目的とする圧縮ファイルが、
> JDK(J2SE SDK) に付属のjarで解凍できるかを試すと良いです。
> jar が使えるのならば自前のプログラムから圧縮関連のAPIを
> 呼ぶだけで大丈夫な可能性が高いです。jar でダメだと望み薄です。

とご返信いただいていますが具体的にはどのような作業になるのでしょう?
書いていることが理解できなかったため関連のホームページを探そうとしても
見つけることが出来ませんでした。
もう少し基本的な事を先に調べたいと思います。
coasm
大ベテラン
会議室デビュー日: 2001/11/26
投稿数: 237
投稿日時: 2004-03-01 18:55
圧縮にunlha32.dllを使っているということは zip でも gzip でもなくて
lzhフォーマットでしょう。ということは、java.util.zip パッケージでは扱えません。

ちょっと検索してみましたが、LHA Library for Java というものがあるようです。
http://homepage1.nifty.com/dangan/Content/Program/Java/jLHA/LhaLibrary.html

スキルアップ/キャリアアップ(JOB@IT)