Ich habe eine Datei im .gz-Format. Die Java-Klasse zum Lesen dieser Datei ist GZIPInputStream. Diese Klasse erweitert jedoch nicht die BufferedReader-Klasse von Java. Daher kann ich die Datei Zeile für Zeile nicht lesen. Ich brauche so etwas wie diesesGZIPInputStream Zeile für Zeile lesen
reader = new MyGZInputStream(some constructor of GZInputStream)
reader.readLine()...
ich aber meine Klasse zu schaffen, die den Reader oder BufferedReader-Klasse von Java erweitert und verwenden GZIPInputStream als eine ihrer Variablen.
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);
}
}
Aber das funktioniert nicht, wenn ich
BufferedReader in = new BufferedReader(
new MyGZFilReader("F:/gawiki-20090614-stub-meta-history.xml.gz"));
System.out.println(in.readLine());
Kann jemand Rat, wie Sie vorgehen ..
siehe diesen Link http://stackoverflow.com/q/6717165/779408. Eine Komprimierungs- und Dekomprimierungsmethode wird dort dargestellt. – breceivemail
Für die Liebe zu allem, was gut und richtig ist in dieser Welt und für die Vernunft aller Entwickler, die sogar remote lohnenden Code schreiben ..... BEACHTEN SIE, ENCODIEREN ALS @ERICKSON PUNKTE AUS! Er ist die einzige Antwort, die darauf hinweist, dass ich weinen möchte. – James