如何在Java中处理压缩数据

时间:2009-11-11 08:40:10

标签: java compression gzip

我有一些数据在未压缩文件中占用超过50MB,但使用gzip压缩到不到半个MB。

大部分是数字数据。我试图弄清楚如何处理这些数据而不必完全解压缩。例如,如果这个数据包含几个字符串和每个记录5个左右的数值,有没有办法可以解压缩一行(或一小组行),处理它们,然后丢弃它们?

Unix提供了直接在压缩数据上运行的zcatgrep等实用程序,我想在Java中也这样做。

由于

1 个答案:

答案 0 :(得分:7)

FileInputStream包裹在GZipInputStream

public static BufferedReader createReader (File f, String encoding) throws IOException
{
    try
    {
        InputStream in = new FileInputStream (f);
        if (f.getName ().endsWith (".gz"))
            in = new GZIPInputStream (in, 10240);

        return new BufferedReader (new InputStreamReader (in, encoding));
    }
    catch (UnsupportedEncodingException e)
    {
        throw new RuntimeException("Missing encoding "+encoding, e);
    }
}