【发布时间】:2010-11-07 23:59:11
【问题描述】:
我有一个 .gz 格式的文件。用于读取该文件的 java 类是 GZIPInputStream。 但是,这个类并没有扩展 java 的 BufferedReader 类。结果,我无法逐行读取文件。我需要这样的东西
reader = new MyGZInputStream( some constructor of GZInputStream)
reader.readLine()...
我想创建一个扩展 Java 的 Reader 或 BufferedReader 类的类,并使用 GZIPInputStream 作为其变量之一。
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);
}
}
但是,当我使用时,这不起作用
BufferedReader in = new BufferedReader(
new MyGZFilReader("F:/gawiki-20090614-stub-meta-history.xml.gz"));
System.out.println(in.readLine());
有人可以建议如何进行..
【问题讨论】:
-
看看这个链接stackoverflow.com/q/6717165/779408。一个压缩和解压缩方法在那里表示。
-
为了热爱这个世界上所有美好和正确的事物,也为了任何编写哪怕是非常有价值的代码的开发人员的理智......注意@erickson 指出的编码!他是唯一指出这一点的答案,这让我想哭。
标签: java file-io filereader gzipinputstream