GUJ Discussões   :   últimos tópicos   |   categorias   |   GUJ Respostas

Descompactação de arquivos com extensão tar.gz


#1

Olá pessoal, estou quebrando a cabeça para descobrir
1uma forma de descompactar arquivos com extensão tar.gz.
Alguém ae já teve este problema teria alguma ideia para compartilhar? :?:

[]s


#2

No linux,

gunzip seuarquivo.tar.gz e depois
tar -xvf seuarquivo.tar

#3

Ops, obrigado luiz_ross.

Eu fiz a descompactação com a dupla gunzip e tar,
porém eu queria saber se existe alguma classe que
faça está tarefa, pois assim eu poderia descompactar
o arquivo.tar.gz no linux e windows. :smiley:

Obrigado


#4

Olá

No Windows use o winzip ou similar.

Há uma versão do tar para DOS (cuidado com diretórios com muitos subdiretórios) que vc pode achar em http://a2.swlibero.org/the_valuable_dos_freeware_page.html

[]s
Luca


#5

Pessoal, obrigado!!!


#6

E se estiver com pressa: tar -zxvf arquivo.tar.gz :smiley:

Marcio Kuchma


#7

Se você quiser fazer um programa Java que abra arquivos .tar e .tar.gz você pode tentar o Java Tar ( http://www.trustice.com/java/tar/ ).

The package com.ice.tar implements a tar archive io package. This package allows you to create, and extract tar archives. Since the package uses InputStream and OutputStream, it is possible to combine this package with the java.util.zip package to handle .tar.gz files. Thus, it is.


#8

Você pode utilizar java.util.zip.GZIPInputStream

Exemplo:
import java.io.*;
import java.util.zip.GZIPInputStream;

public class gzip{

public static void abrir(String entrada, String saida){
try {
BufferedInputStream in = new BufferedInputStream(new GZIPInputStream(new FileInputStream(entrada)));
BufferedOutputStream out = new BufferedOutputStream(new FileOutputStream(saida));
int c;
while( (c=in.read()) != -1 ){
out.write(c);
}
in.close();
out.close();
}
catch (IOException ioe){
System.out.println(ioe.getStackTrace());
}
}

public static void main (String args[]){
abrir(args[0], args[1]);
}

}

:arrow: Atenção para a criação da entrada de dados especializada, que vai permitir você ler o arquivo no formato GZIP.

[]'s
Luiz - Engenheiro Civil - RS


#9

import com.ice.tar.*;
import javax.activation.*;
import java.io.*;
import java.util.zip.GZIPInputStream;
public class untarFiles
{
	public static InputStream getInputStream(String tarFileName) throws Exception{
		if(tarFileName.substring(tarFileName.lastIndexOf(".") + 1, tarFileName.lastIndexOf(".") + 3).equalsIgnoreCase("gz"))
		{
	        System.out.println("Criando um GZIPInputStream para o arquivo");	        
	        return new GZIPInputStream(new FileInputStream(new File(tarFileName)));
	    }
		else
		{
	        System.out.println("Creando um InputStream para o arquivo");
	        return new FileInputStream(new File(tarFileName));
	    }
	}
	public static void readTar(InputStream in, String untarDir) throws IOException{
	      System.out.println("Leitura de TarInputStream... (usando classes de http://www.trustice.com/java/tar/)");
	      TarInputStream tin = new TarInputStream(in);
	      TarEntry tarEntry = tin.getNextEntry();
	      if(new File(untarDir).exists()){
		      while (tarEntry != null){
		         File destPath = new File(untarDir + File.separatorChar + tarEntry.getName());
		         System.out.println("Processing " + destPath.getAbsoluteFile());
		         if(!tarEntry.isDirectory()){
		            FileOutputStream fout = new FileOutputStream(destPath);
		            tin.copyEntryContents(fout);
		            fout.close();
		         }else{
		            destPath.mkdir();
		         }
		         tarEntry = tin.getNextEntry();
		      }
		      tin.close();
	      }else{
	         System.out.println("That destination directory doesn't exist! " + untarDir);
	      }
	   }
	   public static void main(String args[]) {
		try {
			//arquivo na origem
			InputStream desc = getInputStream("c:\temp\arquivo.tar.gz");
			//diretorio destino
			readTar(desc, "c:\temp\");
			}
		catch(Exception e) {
			e.printStackTrace();
			System.out.println(e.getMessage());
			}
		}
}

Obrigado pessoal :smiley: !!!


#10

Obrigado pelo feedback, Spinoza (sempre que vejo esse nome lembro daquele filósofo que não sei se é seu parente, Baruch Spinoza).


#11