加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

Ruby解析gzip二进制字符串

发布时间:2020-12-17 02:30:53 所属栏目:百科 来源:网络整理
导读:我有一个二进制字符串,其中包含两个连接的gzip binarys. (我正在读取将两个gzip文件连接在一起的二进制文件日志文件) 换句话说,我有相同的: require 'zlib'require 'stringio'File.open('t1.gz','w') do |f| gz = Zlib::GzipWriter.new(f) gz.write 'part o
我有一个二进制字符串,其中包含两个连接的gzip binarys. (我正在读取将两个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

当我尝试解压缩组合字符串时,我只得到第一个字符串.我如何获得两个字符串?

解决方法

while c
  io = StringIO.new(c)
  gz = Zlib::GzipReader.new(io)
  gz.each do | l |
    puts l
  end
  c = gz.unused   # take unprocessed portion of the string as the next archive
end

见ruby-doc.

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读