Tôi có 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. Kết quả là, tôi không thể đọc từng dòng một. Tôi cần một cái gì đó như thế nàyGZIPInputStream đọc dòng theo dòng
reader = new MyGZInputStream(some constructor of GZInputStream)
reader.readLine()...
Tôi mặc dù tạo lớp của tôi mở rộng lớp Reader hoặc BufferedReader của java và sử dụng GZIPInputStream làm một 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());
có thể tư vấn một người nào đó làm thế nào để tiến hành ..
xem liên kết này http://stackoverflow.com/q/6717165/779408. Phương pháp nén và giải nén được biểu diễn ở đó. – breceivemail
Vì tình yêu của tất cả những điều tốt đẹp và đúng đắn trong thế giới này và cho sự tỉnh táo của bất kỳ nhà phát triển nào viết mã thậm chí đáng giá từ xa ..... ĐƯỢC CHIA SẺ KHỞI HÀNH NHƯ THẾ NÀO! Anh ấy là câu trả lời duy nhất chỉ ra điều này, khiến tôi muốn khóc. – James