【发布时间】:2023-04-04 10:29:01
【问题描述】:
我有一个二进制字符串,其中包含两个串联的 gzip 二进制文件。 (我正在读取一个将两个 gzip 文件连接在一起的二进制文件日志文件)
换句话说,我有以下等价物:
require 'zlib'
require 'stringio'
File.open('t1.gz', 'w') do |f|
gz = Zlib::GzipWriter.new(f)
gz.write 'part one'
gz.close
end
File.open('t2.gz', 'w') do |f|
gz = Zlib::GzipWriter.new(f)
gz.write 'part 2'
gz.close
end
contents1 = File.open('t1.gz', "rb") {|io| io.read }
contents2 = File.open('t2.gz', "rb") {|io| io.read }
c = contents1 + contents2
gz = Zlib::GzipReader.new(StringIO.new(c))
gz.each do | l |
puts l
end
当我尝试解压缩组合字符串时,我只得到第一个字符串。如何获取两个字符串?
【问题讨论】:
-
首先,拥有您正在使用的实际代码会有所帮助,而不是一些近似值。其次,你是如何解压缩抓取的数据的?
-
@FrederickCheung 他正在通过 GzipReader 解压缩。而这段代码很可能是他的实际代码,只是没有不必要和混乱的业务逻辑。