Ok, donc je veux lire le contenu d'un fichier tar.gz (ou un xy) mais c'est la même chose. Ce que je fais est plus ou moins ceci:Lire tar.gz en Java avec Commons-compression
TarArchiveInputStream tarInput = new TarArchiveInputStream(new GzipCompressorInputStream(new FileInputStream("c://temp//test.tar.gz")));
TarArchiveEntry currentEntry = tarInput.getNextTarEntry();
BufferedReader br = null;
StringBuilder sb = new StringBuilder();
while (currentEntry != null) {
File f = currentEntry.getFile();
br = new BufferedReader(new FileReader(f));
System.out.println("For File = " + currentEntry.getName());
String line;
while ((line = br.readLine()) != null) {
System.out.println("line="+line);
}
}
if (br!=null) {
br.close();
}
Mais je reçois nulle quand j'appelle la méthode getFile
de TarArchiveEntry
.
J'utilise Apache commons compress 1.8.1
Il en est ainsi contre-intuitif ... Même les Etats javadoc "Obtenez le fichier de cette entrée." – kraxor
@kraxor Cela se produit car un objet 'File' ne peut faire référence qu'aux fichiers existants sur le disque et ne peut donc pas être utilisé pour les noms de fichiers compressés – Ferrybig