2

複数のディレクトリを含む .zip アーカイブがあります。.zip アーカイブに到達したい ruby​​zip gem を使用して、指定されたディレクトリ (およびその内容) をコピーし、そのディレクトリを 2 番目の .zip アーカイブに移動します。

理想的には、最初の .zip アーカイブの内容を抽出してから、それらを 2 番目のアーカイブに再圧縮する必要はありません。rubyzip gem で提供されているメソッドを使用する方法があることを願っています。

4

3 に答える 3

1

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::ZipFileZip::File

于 2012-06-18T05:06:27.057 に答える
1

rubyzip gem のメンテナーの 1 人に確認したところ、これは不可能であることがわかりました。

于 2009-09-04T12:37:54.047 に答える
0

これは少し強引な方法ですが (アプリケーションで機能する場合と機能しない場合があります)、最初の zip ファイル全体をコピーしてから、rubyzip メソッドを使用して、コピーしたファイルからターゲット ディレクトリ以外のすべてを削除することができます。

deflate 圧縮 (すべてのファイルを個別に圧縮されたアイテムとして保存する) を使用している場合、理論的には、あなたが求めていることが可能になるはずです。

于 2009-09-04T04:20:44.133 に答える