浏览 5634 次
锁定老帖子 主题:使用ruby生成zip文件
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
|
|
---|---|
作者 | 正文 |
发表时间:2007-10-23
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会返回指定目录中的所有子文件(目录),包括"."和"..",所以要做额外的判断。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2007-10-23
这个东西,我以前用过,后来发现还是更直接的办法也更简单
system "zip -r foo.zip foo/" |
|
返回顶楼 | |
发表时间:2008-01-03
按照第一位的调通了,第二位的不知道是什么意思呢?
|
|
返回顶楼 | |
发表时间:2008-01-05
直接OS调用zip
|
|
返回顶楼 | |
发表时间:2008-03-15
有没有遇到过在linix下打包传给windows文件名和内容都变成乱码的了?
我遇到了,搞了好久搞不定,有人指教下。 http://iceskysl.1sters.com/?action=show&id=229 |
|
返回顶楼 | |
发表时间:2008-03-16
如果已经拿到了csv文件,就用OO转成Excel成么? ---非程序员思路
|
|
返回顶楼 | |