RubyZip,压缩解压工具

ruby 的 zip 压缩包

说明

RubyZip 用于 ruby 进行 zip 的压缩和解压

仓库地址

官方文档

安装方法

gem install rubyzip

使用例子

# 配置例子
require 'zip'
Zip.setup do |c|
  # 当压缩包里边存在同名文件时,自动覆盖。但如果有同名文件夹,还是会抛异常
  c.continue_on_exists_proc = true
  # 解压时自动覆盖文件
  c.on_exists_proc = true
  # 强制编码为 UTF-8
  c.force_entry_names_encoding = 'UTF-8'
  # c.default_compression = Zlib::BEST_COMPRESSION
end

# 压缩例子 1
require 'zip'
input_file = '输入文件'
output_zip = '输出 zip'
Zip::File.open(output_zip, Zip::File::CREATE) do |zip_file|
  # 添加文件
  # 文件名支持带有目录,会在压缩包里边自动创建目录
  # 文件名需使用相对路径
  zip_file.add('文件', input_file)
  zip_file.add('文件夹/文件', input_file)

  # 添加目录
  zip_file.mkdir('创建目录')
end

# 压缩例子 2
# https://github.com/rubyzip/rubyzip/blob/9d891f7353e66052283562d3e252fe380bb4b199/samples/example_recursive.rb

# 解压例子
# 解压时压缩包里边的文件夹会被自动创建(空目录也会被创建),但输出路径 output_dir 必须存在,否则抛异常
require 'zip'
input_zip = 'zip 文件路径'
output_dir = '输出路径'
Zip::File.open(input_zip) do |zip_file|
  zip_file.each do |entry|
    entry.extract(File.join(output_dir, entry.name))
  end
end
使用 Hugo 构建
主题 StackJimmy 设计