Skip to main content

file_compression_gzip

🗜️ Compress and Decompress Files with Zlib::Gzip

Ruby’s built‑in Zlib library makes it straightforward to gzip‑compress or decompress files without external dependencies. Use Zlib::GzipWriter to wrap an IO object and write compressed data, and Zlib::GzipReader to read it back. This streaming approach ensures you never load entire files into memory.

require 'zlib'

# Compress input.txt into input.txt.gz
dir_in = 'input.txt'
dir_out = 'input.txt.gz'
Zlib::GzipWriter.open(dir_out) do |gz|
File.open(dir_in, 'rb') do |fp|
while chunk = fp.read(16 * 1024) do
gz.write(chunk)
end
end
end

# Decompress input.txt.gz back into output.txt
Zlib::GzipReader.open(dir_out) do |gz|
File.open('output.txt', 'wb') do |fp|
while chunk = gz.read(16 * 1024) do
fp.write(chunk)
end
end
end