J'ai un assez gros fichier BZ2 avec plusieursfichiers texte en elle. Puis-je utiliser Java pour décompresser certains fichiers du fichier BZ2 et décompresser / analyser les données à la volée? Supposons qu'un fichier BZ2 de 300 Mo contient 1 Go de texte. Idéalement, je voudrais que mon programme Java lise 1 Mo du fichier BZ2, le décompresse à la volée, agisse dessus et continue à lire le fichier BZ2 pendant plus de données. Est-ce possible?
Merci
Réponses:
20 pour la réponse № 1La bibliothèque commons-compress d'Apache est très bonne. Voici leurs échantillons page: http://commons.apache.org/proper/commons-compress/examples.html
Voici le dernier extrait de Maven:
<dependency>
<groupId>org.apache.commons</groupId>
<artifactId>commons-compress</artifactId>
<version>1.10</version>
</dependency>
Et voici ma méthode util:
public static BufferedReader getBufferedReaderForCompressedFile(String fileIn) throws FileNotFoundException, CompressorException {
FileInputStream fin = new FileInputStream(fileIn);
BufferedInputStream bis = new BufferedInputStream(fin);
CompressorInputStream input = new CompressorStreamFactory().createCompressorInputStream(bis);
BufferedReader br2 = new BufferedReader(new InputStreamReader(input));
return br2;
}
2 pour la réponse № 2
Le projet Ant contient un bzip2 bibliothèque. Qui a un org.apache.tools.bzip2.CBZip2InputStream
classe. Vous pouvez utiliser cette classe pour décompresser le fichier bzip2 à la volée. Elle étend simplement la norme Java InputStream
classe.