先贴出官网的例子
require 'rubygems'
require 'zip/zip'
folder = "Users/me/Desktop/stuff_to_zip"
input_filenames = ['image.jpg', 'description.txt', 'stats.csv']
zipfile_name = "/Users/me/Desktop/archive.zip"
Zip::ZipFile.open(zipfile_name, Zip::ZipFile::CREATE) do |zipfile|
input_filenames.each do |filename|
# Two arguments:
# - The name of the file as it will appear in the archive
# - The original file, including the path to find it
zipfile.add(filename, folder + '/' + filename)
end
end
rubyzip是从java的 java.util.zip模块演变来的,我想正是因为这个原因,这个例子中没有写任何注释,指示我捣鼓了半天才出来,现在附上中文注释
require 'rubygems'
require 'zip/zip'
folder = "Users/me/Desktop/stuff_to_zip" 要解压/压缩文件的目录路径
input_filenames = ['image.jpg', 'description.txt', 'stats.csv']
zipfile_name = "/Users/me/Desktop/archive.zip" #需要的zip文件路径和这个文件的名字
Zip::ZipFile.open(zipfile_name, Zip::ZipFile::CREATE) do |zipfile|
input_filenames.each do |filename|
# add方法中要有两个参数:
# - filename 压缩包中文件名
# - folder就是路径,‘/’后是要解压/压缩的文件的名称
zipfile.add(filename, folder + '/' + filename)
end
end
最后生成的是一个名为archive的压缩包,里面有三个文件
这里有一个很好的例子 又封装了一层,写的蛮好
http://www.flatws.cn/article/program/ruby/2011-04-21/21856.html
当然,如果换一个角度思考,那就是——我为什么一定要用ruby来做呢!?其实说起来,压缩的话,用一个压缩命令搞定
`zip -r a.zip b`
-r 递归所有文件夹中文件
把文件夹b压缩成a.zip,简单的一塌糊涂