从Ruby中的Zip存档中提取特定文件

时间:2016-06-06 07:58:41

标签: ruby-on-rails ruby

我正在开发一个Ruby项目。我需要从Zip Archive而不是所有文件中提取特定文件。我使用“zip”gem尝试了以下代码: -

require 'rubygems'
require 'zip'
@folder = "C:/Users/Shek/Desktop/aadi_elements.zip"
@zip = ''
@vals = []
@files_names = []
@articles = Article.all
Zip::File.open(@folder) { |zip_file|
  @zip = zip_file
  zip_file.each { |f|
    @vals.push f
    @files_names.push f.name
  }
}

上面的代码提取所有文件,但我的重新测试是提取执行单击事件的特定文件。   提前致谢

1 个答案:

答案 0 :(得分:0)

目前尚不清楚是否需要使用gem,因此我建议最简单的方法是调出unzip操作系统可执行文件。这里有两行shell命令,用于说明unzip myzipfilespec desired_file_to_unzip的使用。

首先,我们创建一个包含(空)文件a,b和c的zip,并使用unzip -v显示zip文件的内容。然后我们使用unzip从zip文件中解压缩单个文件。

➜  ~   touch a; touch b; touch c; zip abc a b c; rm a b c; unzip -v abc
updating: a (stored 0%)
updating: b (stored 0%)
updating: c (stored 0%)
Archive:  abc.zip
 Length   Method    Size  Ratio   Date   Time   CRC-32    Name
--------  ------  ------- -----   ----   ----   ------    ----
       0  Stored        0   0%  06-06-16 17:51  00000000  a
       0  Stored        0   0%  06-06-16 17:51  00000000  b
       0  Stored        0   0%  06-06-16 17:51  00000000  c
--------          -------  ---                            -------
       0                0   0%                            3 files
➜  ~   unzip abc b
Archive:  abc.zip
 extracting: b