2012-01-12 7 views
5

Quiero enumerar todas las entradas de un archivo tar en mi programa Java. Como es posible ? Para archivos zip, puedo usar el código de abajo:¿Cómo enumerar todas las entradas de un archivo tar en Java?

ZipFile zf = new ZipFile("ReadZip.zip"); 
Enumeration entries = zf.entries(); 
while (entries.hasMoreElements()) {.....} 

Pero no estoy seguro de los archivos tar. ¿Alguien puede ayudar? Estoy usando org.apache.tools.tar.*

Respuesta

-3

Para leer un archivo .jar de Java, puede usar la herramienta "jar" ... o Descomprimir. Los archivos .Jar están en formato .Zip.

Para leer un archivo .tar * nix, sin embargo, debe utilizar la herramienta "tar".

Si estás en Windows, te animo a probar 7-Zip. Es una práctica herramienta que reconoce un trillón de formatos ... incluyendo tanto .zip (de ahí también .jar) y alquitrán:

http://www.7-zip.org/

Si debe hacerlo mediante programación, supongo que el "alquitrán" Apache Ant API es una buena forma de hacerlo. Se le da una lista de "TarEntry":

http://www.jajakarta.org/ant/ant-1.6.1/docs/ja/manual/api/org/apache/tools/tar/TarEntry.html

+0

post original dice claramente "en Java" –

2

Esta API es muy similar al uso del propioJava.

Para empezar:

TarInputStream tis = new TarInputStream(new FileInputStream("myfile.tar")); 
try 
{ 
    TarEntry entry; 
    do 
    { 
     entry = tis.getNextEntry(); 

     //Do something with the entry 
    } 
    while (entry != null); 
} 
finally 
{ 
    tis.close(); 
} 

More examples with different APIs are [here][2]. 
12

Apache Commons Compress (http://commons.apache.org/compress/) es fácil de usar.

He aquí un ejemplo de la lectura de las entradas de un alquitrán:

import java.io.FileInputStream; 

import org.apache.commons.compress.archivers.tar.TarArchiveEntry; 
import org.apache.commons.compress.archivers.tar.TarArchiveInputStream; 

public class Taread { 
    public static void main(String[] args) { 
     try { 
      TarArchiveInputStream tarInput = new TarArchiveInputStream(new FileInputStream(args[0])); 
      TarArchiveEntry entry; 
      while (null!=(entry=tarInput.getNextTarEntry())) { 
       System.out.println(entry.getName()); 
      } 
     } catch (Exception e) { 
      e.printStackTrace(); 
     } 
    } 
} 
Cuestiones relacionadas