- - PR -
圧縮ファイル(tar.gz)内における複数ファイルの識別及び読み込み
1
投稿者 | 投稿内容 |
---|---|
|
投稿日時: 2006-09-12 00:58
はじめての投稿です。よろしくお願いいたします。
圧縮ファイル(tar.gz)内において、複数のファイルが存在している状態で、 その圧縮ファイルを読み込み、その中からある特定のファイルを抜き出そうと考えています。 xxx.tar.gz -- |-- a001.txt |-- b001.txt ← @ |-- c001.txt |-- d001.txt ← A |-- e001.txt ※上記の「@」と「A」が抜き出したいファイルです。 圧縮ファイル(tar.gz)の読み込みを行う手段としては、 GZIPInputStreamを使用してみましたが、その後streamをどのように解析をし、 特定のファイルのみを抜き出せばよいのか分かりません。 【環境】 OS :windowsXP JDK:1.4.2.12 よろしくお願いいたします。 |
|
投稿日時: 2006-09-12 09:28
該当のファイルはTAR形式で圧縮されたものを
さらにGZIP圧縮されているのではないですか? まずはGZIPInputStreamで読み出したバイト列を ファイルにでも書き出してみて、それがTAR形式として 解凍できるか試みてはいかがでしょうか。 Tarを解凍するためのライブラリは http://jakarta.apache.org/commons/sandbox/compress/ で用意されているようですね。 http://jakarta.apache.org/commons/sandbox/compress/apidocs/org/apache/commons/compress/tar/TarInputStream.html ちょっと調べてみてはいかがでしょうか。 |
|
投稿日時: 2006-09-12 10:17
nagiseさん
返答ありがとうございます。 早速、試してみたいと思います。 また、結果を後ほど返答いたします。 ちなみに、tar.gzファイルは既に何かで作成されているファイルを 解析しようとしているので、nagiseさんの言うとおり、 一度どのような状態になっているか調べてみるのは良いかもしれませんね。 |
|
投稿日時: 2006-09-13 12:35
nagiseさんに教えていただいたライブラリを用いて、解凍はできました。
ありがとうございます。 しかし、一点うまくいかない部分があります。 GZIPInputStreamで解凍した後、TarInputStreamで読み込みTarEntryを取り出しましたが、 そこからファイルを取得することができませんでした。 TarEntry#getFile()でファイルは取得できないのでしょうか? ※TarEntry#getName()で名称は取得できました。 よろしくお願いいたします。 [ メッセージ編集済み 編集者: もとき 編集日時 2006-09-13 12:36 ] |
|
投稿日時: 2006-09-19 10:16
(ちゃんとした方法か分かりませんが)
TarInputStreamのcopyEntryContentsメソッドを使用することによって、 必要なファイルのみFileオブジェクト化することができました。 ありがとうございました。 |
1