2012-02-01 118 views
2

想知道是否有人在这里有一些gzip格式的经验。我有一个非常大的gzip文件,我需要解析。但是,我可能只需要一小部分解压缩的文本文件。是否可以在不解压整个文件的情况下流式处理这个zip文件?gzip格式流式传输

任何使用gzip的经验?

+2

这取决于。 Arte的内容全部是单独的文件,还是您需要从中获取部分的大文件?我认为大多数gzip库(如lzma)在流式传输单个文件方面没有问题。 – Bartvbl 2012-02-01 20:12:54

+0

如果不解压缩整个文件,您将如何确定需要的内容?或者你只需​​要从头开始的一部分? – jtahlborn 2012-02-01 20:32:15

+0

@Bartvbl - 不知道我理解你的评论。 _gzip_格式本质上是一种单一的流格式(这就是为什么它通常与tar,它可以结合多个文件)。 – jtahlborn 2012-02-01 20:33:29

回答

2

你知道你可以使用标准的java库类吧?这是相当琐碎的,是这样的:

GZIPInputStream stream = new GZIPInputStream(new FileInputStream("some_file.gz")); 
BufferedReader reader = new BufferedReader(stream); 

// Now read line by line... till you hit the content you want. 

整个文件不会解压缩在磁盘上,只是豆腐块,你需要它在内存中。你可以选择使用相应的输出流再次压缩和写回。

+0

没有意识到这是多么容易! – 2012-02-01 21:20:11