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 peux pas lire le fichier ligne par ligne. J'ai besoin de quelque chose comme ça
reader = new MyGZInputStream( some constructor of GZInputStream)
reader.readLine()...
J'ai pensé à créer ma classe qui étend la classe Reader ou BufferedReader de java et utilise GZIPInputStream comme l'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 conseiller comment procéder ...