Tengo un archivo en formato .gz. La clase java para leer este archivo es GZIPInputStream. Sin embargo, esta clase no amplía la clase BufferedReader de java. Como resultado, no puedo leer el archivo línea por línea. necesito algo como esto
reader = new MyGZInputStream( some constructor of GZInputStream)
reader.readLine()...
Pensé en crear mi clase que extiende la clase Reader o BufferedReader de Java y uso GZIPInputStream como una de sus 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);
}
}
Pero esto no funciona cuando uso
BufferedReader in = new BufferedReader(
new MyGZFilReader("F:/gawiki-20090614-stub-meta-history.xml.gz"));
System.out.println(in.readLine());
¿Alguien puede aconsejarnos cómo proceder?