- - PR -
GZIPファイルの解凍
1
投稿者 | 投稿内容 | ||||
---|---|---|---|---|---|
|
投稿日時: 2007-04-12 21:19
GZIPファイルの解凍について、質問させてください。
現在下記のコードで解凍はできているのですが、解凍後のファイルの名前に困っています。 [現状] "sample.gz"ファイル内に"aaa.txt"というテキストがあるということにして解凍だけは出来ています。 [目的] 本番では、解凍されたファイルは、元の圧縮ファイル内にあるファイル名そのままのものにテキストデータが書き込まれている状態にしたいと思っています。 (このサンプルでは、どの圧縮ファイルがきても、解凍されたファイル名は"aaa.txt"固定となってしまいます。) (例) 圧縮ファイル"aaa.gz"内には"111.txt"がある →解凍後のファイル名は"111.txt" 圧縮ファイル"bbb.gz"内には"222.txt"がある →解凍後のファイル名は"222.txt" 元のテキストデータのファイル名(例では"111.txt"または"222.txt")取得方法をご存知の方がいらっしゃいましたら、恐縮ですがご教授よろしくお願いいたします。 ==================================================================== (ソース抜粋) try { String origName = "C:\sample.gz"; File file = new File( origName); BufferedInputStream bis = new BufferedInputStream( new GZIPInputStream( new FileInputStream( file ) ) ); String bodyName = "C:\aaa.txt"; BufferedOutputStream bos = new BufferedOutputStream( new FileOutputStream( new File( bodyName ) ) ); int c; while( ( c = bis.read() ) != -1 ) { bos.write( (byte)c ); } bis.close(); bos.close(); }catch( Exception e ){ } ==================================================================== | ||||
|
投稿日時: 2007-04-12 21:51
おそらく、アーカイバと圧6縮をごちゃまぜにしているかと。gzipはzipではありません。 gzipは純粋にデータを圧縮するだけ。ファイルをアーカイブしません。 zip = アーカイバ+圧縮(unzipはその逆) gzip = 圧縮 です。だからgzipにはファイルを取り出す機能はありません。UNIXで使う場合は tar(アーカイバ)と組み合わせます。 | ||||
|
投稿日時: 2007-04-12 23:40
gzipされたファイルに元のファイル名を記録することができますが(記録されてないこともある)、GZIPInputStream を使おうとするとファイル名を取り出す手段がなさそうですね。
gzip のファイル構造を調べて、Inflater を使って伸長させればできるのかもしれません。 | ||||
|
投稿日時: 2007-04-13 11:04
加納さん、スフレさん、ご回答頂き、ありがとうございました。
どうも考え違いをしていたようですね。。 gzipもzipも同じようなものだと思い込んでいました… ".tar.gz"で再度調べてみたいと思います。 (こちらだとファイル名取得も出来そうなので。) お教えいただき、ありがとうございました。 |
1