我正在开发一个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
}
}
上面的代码提取所有文件,但我的重新测试是提取执行单击事件的特定文件。 提前致谢
答案 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