2012-01-12 54 views
5

我想在我的Java程序中列出tar文件的所有條目。這怎麼可能 ? 對於zip文件,我可以使用下面的代碼:如何在java中列出tar文件的所有條目?

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

但我不知道該tar文件。任何人都可以幫忙嗎?我正在使用org.apache.tools.tar.*

回答

-3

要閱讀Java .jar文件,可以使用「jar」工具...或解壓縮。 .Jar文件採用.Zip格式。

但是,要讀取* nix .tar文件,您需要使用「tar」工具。

如果你在Windows上,我建議你試試7-Zip。這是一個方便的工具,識別數不勝數格式...既包括.zip文件(因此也.JAR)和焦油

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

如果你必須以編程方式做到這一點,我猜Apache Ant的API「焦油」是一個好方法。它給你 「TarEntry」 的列表:

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

+0

原崗位明確提出「在Java」規定 – 2012-12-31 18:47:22

2

這個API非常類似於使用Java自身ZipInputStream

要開始了:

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/)易於使用。

這裏的閱讀焦油的表項的例子:

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(); 
     } 
    } 
} 
相關問題