可以通过以下方式在 RAM 中压缩字符串
require "compress/gzip"
compressed_string = String.build do |io|
Compress::Gzip::Writer.open(io) do |gzip|
gzip << "Compress me"
end
end
p compressed_string
到目前为止一切顺利,所以我想弄清楚如何进行反向变换, 但明显的镜像代码似乎并不是答案:
#########
# buggy #
#########
decompressed_string = String.build do |io|
Compress::Gzip::Reader.open(io) do |gzip|
gzip << compressed_string
end
end
p decompressed_string
正确的表述是:
# Compress
compressed_string = String.build do |io|
Compress::Gzip::Writer.open(io) do |gzip|
gzip << "Compress me"
end
end
p compressed_string
# Decompress
str = Compress::Gzip::Reader.open(IO::Memory.new (compressed_string)) do |gzip|
gzip.gets_to_end
end
p str