Rubyzip を使用して、ZIP アーカイブ内のディレクトリを 2 番目の ZIP アーカイブにコピーするにはどうすればよいですか?

StackOverflow https://stackoverflow.com/questions/1377189

  •  21-09-2019
  •  | 
  •  

質問

いくつかのディレクトリを含む .zip アーカイブがあります。Rubyzip gem を使用して、.zip アーカイブにアクセスし、指定されたディレクトリ (およびその内容) をコピーし、そのディレクトリを 2 番目の .zip アーカイブに移動したいと考えています。

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

役に立ちましたか?

解決

Rubyzip gem のメンテナーの 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
代わりrequire 'zip/zip'

のRubyZipのバージョン<1.0、代わりZip::ZipFile、および使用Zip::Fileについて

これは、ブルートフォース方式のビットがある(とやアプリケーションの動作しないことがあります)がありますが、全体の最初のzipファイルをコピーして、削除のすべてが、コピーされたファイルからターゲットディレクトリにrubyzipメソッドを使用することができます。

あなたは(個別に圧縮されたアイテムとして、すべてのファイルを保存する)deflate圧縮を使用している場合は、

理論的には何を求めていることは可能なはずです。

ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top