J'ai un fichier au format .gz. La classe java pour lire ce fichier est GZIPInputStream. Cependant, cette classe n'étend pas la classe BufferedReader de java. Par conséquent, je ne suis pas en mesure de lire le fichier ligne par ligne. J'ai besoin de quelque chose comme ceci
reader = new MyGZInputStream( some constructor of GZInputStream)
reader.readLine()...
J'ai pensé créer une classe qui étend la classe Reader ou BufferedReader de java et utiliser GZIPInputStream comme une de ses variables.
import java.io.BufferedReader;
import java.io.FileInputStream;
import java.io.FileNotFoundException;
import java.io.IOException;
import java.io.Reader;
import java.util.zip.GZIPInputStream;
public class MyGZFilReader extends Reader {
private GZIPInputStream gzipInputStream = null;
char[] buf = new char[1024];
@Override
public void close() throws IOException {
gzipInputStream.close();
}
public MyGZFilReader(String filename)
throws FileNotFoundException, IOException {
gzipInputStream = new GZIPInputStream(new FileInputStream(filename));
}
@Override
public int read(char[] cbuf, int off, int len) throws IOException {
// TODO Auto-generated method stub
return gzipInputStream.read((byte[])buf, off, len);
}
}
Mais, cela ne fonctionne pas quand j'utilise
BufferedReader in = new BufferedReader(
new MyGZFilReader("F:/gawiki-20090614-stub-meta-history.xml.gz"));
System.out.println(in.readLine());
Quelqu'un peut-il me conseiller sur la marche à suivre ?
0 votes
Regardez ce lien stackoverflow.com/q/6717165/779408 . Une méthode de compression et de décompression y est représentée.
1 votes
Pour l'amour de tout ce qui est bon et juste dans ce monde et pour la santé mentale de tous les développeurs qui écrivent du code un tant soit peu valable..... SOYEZ CONSCIENTS DE L'ENCODAGE COMME @erickson le signale ! C'est la seule réponse qui le signale, ce qui me donne envie de pleurer.