Ho un file in formato .gz. La classe java per leggere questo file è GZIPInputStream. Tuttavia, questa classe non estende la classe BufferedReader di java. Di conseguenza, non sono in grado di leggere il file riga per riga. Ho bisogno di qualcosa di simileGZIPInputStream lettura riga per riga
reader = new MyGZInputStream(some constructor of GZInputStream)
reader.readLine()...
ho pensato di creare la mia classe che estende l'Reader o BufferedReader classe di java e l'uso GZIPInputStream come uno dei suoi variabile.
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);
}
}
Ma, questo non funziona quando uso
BufferedReader in = new BufferedReader(
new MyGZFilReader("F:/gawiki-20090614-stub-meta-history.xml.gz"));
System.out.println(in.readLine());
può consigliare qualcuno come procedere ..
guardare questo collegamento http://stackoverflow.com/q/6717165/779408. Un metodo di compressione e decompressione è rappresentato lì. – breceivemail
Per l'amore di tutto ciò che è buono e giusto in questo mondo e per la sanità di tutti gli sviluppatori che scrivono anche codice remotamente valido ..... SIAMO CONSAPEVOLI DI CODIFICARE COME @erickson PUNTI FUORI! È l'unica risposta che lo fa notare, il che mi fa venir voglia di piangere. – James