我有一些数据在未压缩的文件中占用了超过50MB的数据,但是使用gzip
压缩到不到一半的MB。
其中大多数是数字数据。我试图弄清楚如何处理这些数据而不必完全解压缩它。例如,如果此数据包含几个字符串和每个记录5个左右的数值,我是否可以解压缩一行(或一小组行),然后对其进行处理,然后丢弃它们?
Unix提供了诸如zcat
,grep
等实用程序,这些实用程序可以直接对压缩数据进行操作,我想在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/