首先安装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会返回指定目录中的所有子文件(目录),包括"."和"..",所以要做额外的判断。
分享到:
- 2007-10-23 17:28
- 浏览 6123
- 评论(5)
- 论坛回复 / 浏览 (5 / 5633)
- 查看更多
相关推荐
标题“shell+ruby.zip”指的是一个使用Shell脚本和Ruby语言结合的压缩包,其中包含了处理Redis数据库中数据的相关工具。这个压缩包可能是为了解决在大数据量的Redis实例中,快速查找和导出特定前缀键值的问题。 ...
在压缩包中,"rdoc.zip"可能包含的是Ruby的RDoc文档。RDoc是Ruby的官方文档生成工具,它能够从源代码注释中提取信息,生成HTML或其他格式的API文档,帮助开发者理解和使用Ruby代码。安装RDoc后,开发者可以通过`rdoc...
解压"ruby2.6.1.zip"后,你可以得到"ruby-2.6.1"目录,里面包含了完整的Ruby 2.6.1源码、预编译二进制文件、安装脚本以及相关的文档。由于这是一个zip版本,解压后可以直接使用,无需安装过程,这对于开发者来说是一...
在本场景中,"Ruby_2.6.6.zip" 是一个包含Ruby 2.6.6版本的压缩包,这通常是用于在本地环境中搭建Jekyll博客的必要组件。Jekyll是一个静态站点生成器,它允许用户使用Markdown、HTML和 Liquid模板语言编写内容,并...
这个压缩包“RetroArch游戏手柄自动配置文件_Ruby_Makefile_下载.zip”包含了与RetroArch相关的游戏手柄自动配置文件以及Ruby编写的Makefile,用于简化配置过程。 1. **RetroArch**: - **定义**:RetroArch是一个...
odf-report, 在给定模板(. odt ) 和数据的情况下生成ODF文件,替换标记 odf报告通过在以前创建的. odt 文件中创建字符串。...根据流行的请求,现在使用 rubyzip ~> 1.1.0使用 Zip::OutputStream.write_buff
RubyCritic 集成 Reek,Flay 和 Flog 这 3 个代码静态分析的工具,对你的Ruby代码进行静态分析并生成代码质量报告。运行效果:您的项目概览,并且可以对代码打分(百分制)根据各自的坏味道数量建立文件索引(对...
4. 生成可执行文件:Ocra会生成一个`.exe`文件,这个文件包含了所有必要的组件,可以在没有Ruby环境的Windows系统上运行。 5. 测试与发布:在目标系统上运行生成的`.exe`文件,确保程序能够正常工作。如果一切顺利...
"autodoc-master"可能包含了项目的源代码、配置文件、示例、测试用例以及可能的README文件,用于指导用户如何安装、配置和使用这个文档生成工具。 在Ruby世界中,这样的工具通常会依赖于像Yard这样的库来解析代码...
在这个"使用v2授权程序的Todo应用程序的Ruby后端.zip"中,我们可以推测这是一个使用Ruby语言构建的Todo应用,其后端部分着重处理数据操作和用户验证。下面我们将深入探讨这个项目可能涉及的Ruby MVC框架、授权管理和...
warbler, Warbler chirpily构建你的ruby 应用程序的....Rails 或者 rack 应用程序中生成一个 Java jar 或者war文件。 to提供了一种最小。灵活的ruby类似的方法,用于将所有应用程序文件分发到Java环境。
5. 使用文本编辑器查看或修改解包后的文件,可能需要对Ruby语法有一定的了解。 6. 如果修改了脚本,可能需要重新打包文件,并用RPG制作大师VX Ace加载测试。 尽管解包工具能提供深入定制游戏的机会,但滥用可能会...
标题 "我的博客_HTML_Ruby_下载.zip" 暗示这是一个包含个人博客源代码的压缩文件,使用了HTML和Ruby技术。这个博客可能基于GitHub Pages服务,因为文件名中的"alexharv074.github.io-master"通常表示GitHub仓库的主...
_Ruby_下载.zip"压缩包中,包含了一个名为`google_distance_matrix-master`的文件夹,这通常意味着这是一个Git仓库的克隆或者源码包,其中包含了使用Ruby编写的客户端库代码。开发者可以通过解压并导入这个库,轻松...
如果是zip文件,可以使用`unzip`命令解压。 3. **进入源码目录**:`cd`命令进入解压后的目录,如`cd ruby-2.3.1`。 4. **配置阶段**:运行`./configure`命令。这个脚本会检查你的系统环境,设置合适的编译选项,并...
在使用 Coco 过程中,开发者通常会遵循以下步骤: 1. **安装**:首先,需要将 Coco gem 添加到项目的 Gemfile 文件中,并运行 `bundle install` 安装。 2. **配置**:然后,在测试配置文件(如 RSpec 的 `spec_...
"ruby_learning-master.zip"是一个包含有关学习Ruby on Rails的资源包,特别是关于搭建博客应用的源代码。 在Rails中,`Model`代表数据模型,处理数据库交互;`View`负责用户界面展示;而`Controller`是模型和视图...
在Ruby中,JSON(JavaScript Object Notation)是一种广泛使用的轻量级数据交换格式,它易于人阅读和编写,同时也易于机器解析和生成。JSON是互联网上最常用的序列化格式,尤其在Web服务和API开发中。 Ruby内建支持...
不再需要大的磁盘空间或内存分配来生成zip,甚至是巨大的zip。 因此它适用于Heroku。 用户立即开始下载,这减少了Heroku上的延迟,下载时间和超时。 Zipline现在取决于,如果您有更高级的用例,则可能只想直接...