`

使用ruby生成zip文件

阅读更多
首先安装rubyzip:

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会返回指定目录中的所有子文件(目录),包括"."和"..",所以要做额外的判断。
分享到:
评论
5 楼 lgn21st 2008-03-16  
如果已经拿到了csv文件,就用OO转成Excel成么? ---非程序员思路
4 楼 iceskysl 2008-03-15  
有没有遇到过在linix下打包传给windows文件名和内容都变成乱码的了?

我遇到了,搞了好久搞不定,有人指教下。
http://iceskysl.1sters.com/?action=show&id=229
3 楼 neodoxy 2008-01-05  
直接OS调用zip
2 楼 haiyang 2008-01-03  
按照第一位的调通了,第二位的不知道是什么意思呢?
1 楼 gigix 2007-10-23  
这个东西,我以前用过,后来发现还是更直接的办法也更简单
system "zip -r foo.zip foo/"

相关推荐

    shell+ruby.zip

    标题“shell+ruby.zip”指的是一个使用Shell脚本和Ruby语言结合的压缩包,其中包含了处理Redis数据库中数据的相关工具。这个压缩包可能是为了解决在大数据量的Redis实例中,快速查找和导出特定前缀键值的问题。 ...

    ruby 最新 安装文件 与 API

    在压缩包中,"rdoc.zip"可能包含的是Ruby的RDoc文档。RDoc是Ruby的官方文档生成工具,它能够从源代码注释中提取信息,生成HTML或其他格式的API文档,帮助开发者理解和使用Ruby代码。安装RDoc后,开发者可以通过`rdoc...

    Ruby_2.6.6.zip

    在本场景中,"Ruby_2.6.6.zip" 是一个包含Ruby 2.6.6版本的压缩包,这通常是用于在本地环境中搭建Jekyll博客的必要组件。Jekyll是一个静态站点生成器,它允许用户使用Markdown、HTML和 Liquid模板语言编写内容,并...

    ruby2.6.1.zip

    解压"ruby2.6.1.zip"后,你可以得到"ruby-2.6.1"目录,里面包含了完整的Ruby 2.6.1源码、预编译二进制文件、安装脚本以及相关的文档。由于这是一个zip版本,解压后可以直接使用,无需安装过程,这对于开发者来说是一...

    RetroArch游戏手柄自动配置文件_Ruby_Makefile_下载.zip

    这个压缩包“RetroArch游戏手柄自动配置文件_Ruby_Makefile_下载.zip”包含了与RetroArch相关的游戏手柄自动配置文件以及Ruby编写的Makefile,用于简化配置过程。 1. **RetroArch**: - **定义**:RetroArch是一个...

    odf-report, 在给定模板(. odt ) 和数据的情况下生成ODF文件,替换标记.zip

    odf-report, 在给定模板(. odt ) 和数据的情况下生成ODF文件,替换标记 odf报告通过在以前创建的. odt 文件中创建字符串。...根据流行的请求,现在使用 rubyzip ~&gt; 1.1.0使用 Zip::OutputStream.write_buff

    生成Ruby代码质量报告RubyCritic.zip

    RubyCritic 集成 Reek,Flay 和 Flog 这 3 个代码静态分析的工具,对你的Ruby代码进行静态分析并生成代码质量报告。运行效果:您的项目概览,并且可以对代码打分(百分制)根据各自的坏味道数量建立文件索引(对...

    Ruby 应用安装程序制作工具 Ocra.zip

    4. 生成可执行文件:Ocra会生成一个`.exe`文件,这个文件包含了所有必要的组件,可以在没有Ruby环境的Windows系统上运行。 5. 测试与发布:在目标系统上运行生成的`.exe`文件,确保程序能够正常工作。如果一切顺利...

    从您的机架应用程序和请求规范生成文档。_Ruby_HTML_下载.zip

    "autodoc-master"可能包含了项目的源代码、配置文件、示例、测试用例以及可能的README文件,用于指导用户如何安装、配置和使用这个文档生成工具。 在Ruby世界中,这样的工具通常会依赖于像Yard这样的库来解析代码...

    使用v2授权程序的Todo应用程序的Ruby后端.zip

    在这个"使用v2授权程序的Todo应用程序的Ruby后端.zip"中,我们可以推测这是一个使用Ruby语言构建的Todo应用,其后端部分着重处理数据操作和用户验证。下面我们将深入探讨这个项目可能涉及的Ruby MVC框架、授权管理和...

    warbler, Warbler chirpily构建你的ruby 应用程序的. war 文件.zip

    warbler, Warbler chirpily构建你的ruby 应用程序的....Rails 或者 rack 应用程序中生成一个 Java jar 或者war文件。 to提供了一种最小。灵活的ruby类似的方法,用于将所有应用程序文件分发到Java环境。

    RGSS加密文件解包器.zip

    5. 使用文本编辑器查看或修改解包后的文件,可能需要对Ruby语法有一定的了解。 6. 如果修改了脚本,可能需要重新打包文件,并用RPG制作大师VX Ace加载测试。 尽管解包工具能提供深入定制游戏的机会,但滥用可能会...

    我的博客_HTML_Ruby_下载.zip

    标题 "我的博客_HTML_Ruby_下载.zip" 暗示这是一个包含个人博客源代码的压缩文件,使用了HTML和Ruby技术。这个博客可能基于GitHub Pages服务,因为文件名中的"alexharv074.github.io-master"通常表示GitHub仓库的主...

    Google距离矩阵API的Ruby客户端。_Ruby_下载.zip

    _Ruby_下载.zip"压缩包中,包含了一个名为`google_distance_matrix-master`的文件夹,这通常意味着这是一个Git仓库的克隆或者源码包,其中包含了使用Ruby编写的客户端库代码。开发者可以通过解压并导入这个库,轻松...

    mac安装ruby-2.3.1 源码

    如果是zip文件,可以使用`unzip`命令解压。 3. **进入源码目录**:`cd`命令进入解压后的目录,如`cd ruby-2.3.1`。 4. **配置阶段**:运行`./configure`命令。这个脚本会检查你的系统环境,设置合适的编译选项,并...

    Ruby 代码覆盖率工具 Coco.zip

    在使用 Coco 过程中,开发者通常会遵循以下步骤: 1. **安装**:首先,需要将 Coco gem 添加到项目的 Gemfile 文件中,并运行 `bundle install` 安装。 2. **配置**:然后,在测试配置文件(如 RSpec 的 `spec_...

    ruby_learning-master.zip

    "ruby_learning-master.zip"是一个包含有关学习Ruby on Rails的资源包,特别是关于搭建博客应用的源代码。 在Rails中,`Model`代表数据模型,处理数据库交互;`View`负责用户界面展示;而`Controller`是模型和视图...

    ruby-ruby的json实现-优质项目.zip

    在Ruby中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON是互联网上最常用的序列化格式,尤其在Web服务和API开发中。 Ruby内建支持...

    zipline:一个让您从Rails流式传输zip文件的gem

    不再需要大的磁盘空间或内存分配来生成zip,甚至是巨大的zip。 因此它适用于Heroku。 用户立即开始下载,这减少了Heroku上的延迟,下载时间和超时。 Zipline现在取决于,如果您有更高级的用例,则可能只想直接...

Global site tag (gtag.js) - Google Analytics