2007-10-23
使用ruby生成zip文件
首先安装rubyzip:
gem install rubyzip
《Ruby Cookbook》里面简要地介绍了如何使用rubyzip读写zip文件,代码如下:
但实际上这段代码没什么用处,一般我们都是要把已有的文件或文件夹压缩成zip,要怎么办呢?基本想法是递归遍历给定文件(目录),然后把文件一个一个的加入zip文件中。代码如下:
其实最主要的就是ZipFile类的add方法,第一个参数指定zip文件中的路径,第二个参数指定要被压缩的文件的路径。
另外还要注意的是Dir.foreach会返回指定目录中的所有子文件(目录),包括"."和"..",所以要做额外的判断。
gem install rubyzip
《Ruby Cookbook》里面简要地介绍了如何使用rubyzip读写zip文件,代码如下:
# 写zip
require 'rubygems'
require 'zip/zipfilesystem'
Zip::ZipFile.open('zipfile.zip', Zip::ZipFile::CREATE) do |zip|
zip.file.open('file1', 'w') { |f| f << 'This is file 1.' }
zip.dir.mkdir('sub_dir')
zip.file.open('sub_dir/file2', 'w') { |f| f << 'This is file 2.' }
end
但实际上这段代码没什么用处,一般我们都是要把已有的文件或文件夹压缩成zip,要怎么办呢?基本想法是递归遍历给定文件(目录),然后把文件一个一个的加入zip文件中。代码如下:
def compress
Zip::ZipFile.open 'zipfile.zip', Zip::ZipFile::CREATE do |zip|
add_file_to_zip('dir', zip)
end
end
def add_file_to_zip(file_path, zip)
if File.directory?(file_path)
Dir.foreach(file_path) do |sub_file_name|
add_file_to_zip("#{file_path}/#{sub_file_name}", zip) unless sub_file_name == '.' or sub_file_name == '..'
end
else
zip.add(file_path, file_path)
end
end
其实最主要的就是ZipFile类的add方法,第一个参数指定zip文件中的路径,第二个参数指定要被压缩的文件的路径。
另外还要注意的是Dir.foreach会返回指定目录中的所有子文件(目录),包括"."和"..",所以要做额外的判断。
评论
lgn21st
2008-03-16
如果已经拿到了csv文件,就用OO转成Excel成么? ---非程序员思路
iceskysl
2008-03-15
有没有遇到过在linix下打包传给windows文件名和内容都变成乱码的了?
我遇到了,搞了好久搞不定,有人指教下。
http://iceskysl.1sters.com/?action=show&id=229
我遇到了,搞了好久搞不定,有人指教下。
http://iceskysl.1sters.com/?action=show&id=229
neodoxy
2008-01-05
直接OS调用zip
haiyang
2008-01-03
按照第一位的调通了,第二位的不知道是什么意思呢?
gigix
2007-10-23
这个东西,我以前用过,后来发现还是更直接的办法也更简单
system "zip -r foo.zip foo/"
发表评论
提醒: 该博客已发表在公共论坛,博客所有留言会成为论坛回贴,留言请注意遵守论坛发贴规则
- 浏览: 137414 次
- 来自: 上海交通大学软件学院

- 详细资料
搜索本博客
最近加入圈子
最新评论
-
另一只眼看Eclipse,所谓 ...
其他不管你学什么都会遇到一定的困惑的,一定的。
-- by mylvan -
我的第一关rake文件
robbin 写道每次当我想操起ruby写rake file的时候,都发现我三行 ...
-- by rubynroll -
我的第一关rake文件
抛出异常的爱 写道rake是建表结构的....不是用来导数据的 不如用exce ...
-- by liusong1111 -
我的第一关rake文件
不知大家有没有这种需求,用户的日常操作中,原始数据可能是其他人员发给他的exce ...
-- by zengyinbo -
使用ruby生成zip文件
如果已经拿到了csv文件,就用OO转成Excel成么? ---非程序员思路
-- by lgn21st






评论排行榜