我如何复制zip压缩包中的目录到第二zip存档使用rubyzip?
题
我有一个包含几个目录.zip存档。使用rubyzip宝石我想伸入.zip存档,复制指定的目录(和其内容),移动目录到第二.zip存档。
理想我就不必提取第一.zip存档的内容,然后重新压缩它们成第二压缩文件。我希望有使用在rubyzip宝石提供的方法的一种方式。
解决方案
与rubyzip宝石的维护者的一个检查后,我已经了解到,这是不可能的。
其他提示
在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
有关代替RubyZip <1.0版本中,require 'zip/zip'
,和使用Zip::ZipFile
代替Zip::File
这是一个有点蛮力的方法(可能或可能不适合你的应用程序中工作),但你可以复制整个第一zip文件,然后使用rubyzip方法来删除一切,但在复制文件的目标目录。
理论上你是问,如果你正在使用deflate压缩(其中每一个文件存储作为一个单独压缩项目)应该是可能的。
不隶属于 StackOverflow