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

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

Unix提供了诸如zcatgrep等实用程序,这些实用程序可以直接对压缩数据进行操作,我想在Java中做同样的事情。

谢谢

最佳答案

只需将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);
    }
}

关于java - 如何用Java处理压缩数据,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/1713853/

10-12 00:03
查看更多