質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.50%
Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

Q&A

解決済

4回答

13963閲覧

Javaでtar.gzファイルの解凍

javabigineer

総合スコア87

Java

Javaは、1995年にサン・マイクロシステムズが開発したプログラミング言語です。表記法はC言語に似ていますが、既存のプログラミング言語の短所を踏まえていちから設計されており、最初からオブジェクト指向性を備えてデザインされています。セキュリティ面が強力であることや、ネットワーク環境での利用に向いていることが特徴です。Javaで作られたソフトウェアは基本的にいかなるプラットフォームでも作動します。

0グッド

0クリップ

投稿2015/12/09 06:05

Javaでtar.gzファイルの解凍を行いたいのですが、可能でしょうか?
可能であれば参考となるサイトや資料、サンプルなどいただけるとありがたいです。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答4

0

最近似たようなのを少しやったので・・
argiusさんのAnt.jar使ったらこんな感じでしょうか。

java

1import java.io.File; 2import java.io.FileInputStream; 3import java.io.FileOutputStream; 4import java.io.IOException; 5import java.util.zip.GZIPInputStream; 6 7import org.apache.tools.tar.TarEntry; 8import org.apache.tools.tar.TarInputStream; 9 10public class Main { 11 12 public static void main(String[] args) throws Exception { 13 14 uncompress("hogehoge.tar.gz"); 15 16 } 17 18 /* 19 * tar形式のファイルを解凍する 20 * @String path 解凍したいtarファイルのパス 21 * 22 */ 23 private static void uncompress(String path) throws IOException { 24 25 TarInputStream tin = new TarInputStream(new GZIPInputStream(new FileInputStream(new File(path)))); 26 27 for(TarEntry tarEnt = tin.getNextEntry(); tarEnt != null; tarEnt = tin.getNextEntry()) { 28 File tarFile = new File(tarEnt.getName()); 29 if(tarEnt.isDirectory()){ 30 new File(tarEnt.getName()).mkdir(); 31 } 32 else { 33 FileOutputStream fos = new FileOutputStream(new File(tarEnt.getName())); 34 tin.copyEntryContents(fos); 35 //TODO tarEnt.getMode()から適切な権限をセットする 36 //実行権をセット 37 tarFile.setExecutable(true, false); 38 //読込権限をセット 39 tarFile.setReadable(true, false); 40 //書込み権限をセット 41 tarFile.setWritable(true, false); 42 } 43 //更新日時をセット 44 tarFile.setLastModified(tarEnt.getModTime().getTime()); 45 } 46 tin.close(); 47 } 48}

Unix系OSの場合は特に実行権を引き継ぐ必要があります。

  • エラー処理
  • ディレクトリの更新日付のセット
  • 適切な権限セット
  • 適切なGroupIdとuserのセット
  • Symboliclink

いろいろとやることはありますね・・・

投稿2015/12/10 03:17

tsunex

総合スコア206

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

http://d.hatena.ne.jp/wistery_k/20120208/1349073069

上記のサイトではtarの操作にAnt内のorg.apache.tools.tar.TarInputStreamクラスを使用していますが、Commons Compressorg.apache.commons.compress.archivers.tar.TarArchiveInputStreamで代替できるでしょう。

投稿2015/12/09 06:22

編集2015/12/09 07:11
退会済みユーザー

退会済みユーザー

総合スコア0

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

Antに含まれている機能を使って展開する方法です。
別途、Antをダウンロードして、そのjarファイルをクラスパスに通してください。

javaでtar.gz書庫を展開する - #define int ll
http://d.hatena.ne.jp/wistery_k/20120208/1349073069

投稿2015/12/09 06:18

argius

総合スコア9388

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

http://d.hatena.ne.jp/wistery_k/20120208/1349073069

http://javatec.blog105.fc2.com/blog-entry-13.html

サンプルコードが提示されてありますね。

参考にしてください。

投稿2015/12/09 06:16

liguofeng29

総合スコア801

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.50%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問