我有一个包含几个目录的.zip归档文件。使用rubyzip gem,我想进入.zip归档,复制一个指定的目录(及其内容),并将该目录移动到另一个.zip归档中。
理想情况下,我不必提取第一个.zip归档的内容,然后将它们重新压缩到第二个归档中。我希望有一种方法可以使用rubyzip gem中提供的方法。
发布于 2009-09-04 12:37:54
在与rubyzip gem的维护人员确认后,我了解到这是不可能的。
发布于 2012-06-18 13:06:27
RubyZip库必须从那时起进行更新才能支持它。这对我很有效。
require 'rubygems'
require 'zip' # gem 'rubyzip', '>= 1.0'
Zip::File.open('large.zip', false) do |input|
Zip::File.open('small.zip', true) do |output|
input.glob('my_folder_name/*') do |entry|
entry.get_input_stream do |input_entry_stream|
output.get_output_stream(entry.name) do |output_entry_stream|
# you could also chunk this, rather than reading it all at once.
output_entry_stream.write(input_entry_stream.read)
end
end
end
end
end对于小于1.0的RubyZip版本,请使用require 'zip/zip',并使用Zip::ZipFile而不是Zip::File
发布于 2009-09-04 04:20:44
这有点像暴力破解方法(可能对您的应用程序有效,也可能不适用),但是您可以复制整个第一个zip文件,然后使用rubyzip方法从复制的文件中删除除目标目录之外的所有内容。
从理论上讲,如果您正在使用deflate压缩(它将每个文件存储为单独压缩的项目),那么您所要求的应该是可能的。
https://stackoverflow.com/questions/1377189
复制相似问题