Tôi có một tệp ở định dạng .gz. Lớp java để đọc tệp này là GZIPInputStream. Tuy nhiên, lớp này không mở rộng lớp BufferedReader của java. Do đó, tôi không thể đọc từng dòng tệp. Tôi cần một cái gì đó như thế này
reader = new MyGZInputStream( some constructor of GZInputStream)
reader.readLine()...
Tôi đang tạo lớp của mình để mở rộng lớp Reader hoặc BufferedReader của java và sử dụng GZIPInputStream làm một trong những biến của nó.
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);
}
}
Nhưng, điều này không hoạt động khi tôi sử dụng
BufferedReader in = new BufferedReader(
new MyGZFilReader("F:/gawiki-20090614-stub-meta-history.xml.gz"));
System.out.println(in.readLine());
Ai đó có thể tư vấn làm thế nào để tiếp tục ..