Come posso copiare una directory all'interno di un archivio zip per un secondo archivio zip utilizzando rubyzip?

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

  •  21-09-2019
  •  | 
  •  

Domanda

Ho un archivio .zip contenente diverse directory. Usando la gemma rubyzip vorrei raggiungere in archivio .zip, copiare una directory specificata (e il relativo contenuto) e spostare la directory in un secondo archivio .zip.

Idealmente non avrei per estrarre il contenuto del primo archivio .zip, poi ri-zip in un secondo archivio. Spero ci sia un modo per utilizzare i metodi forniti nella gemma rubyzip.

È stato utile?

Soluzione

Dopo aver verificato con uno dei manutentori della gemma rubyzip, ho imparato che questo non è possibile.

Altri suggerimenti

La biblioteca RubyZip deve essere stato aggiornato da allora per sostenerlo. Questo ha funzionato per me.

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

Per le versioni di RubyZip <1,0, require 'zip/zip' invece, e l'uso Zip::ZipFile invece di Zip::File

Questo è un po 'di un metodo di forza bruta (e può o non può funzionare per la vostra applicazione), ma si potrebbe copiare l'intero file prima zip e quindi utilizzare rubyzip metodi per cancellare tutto, ma la directory di destinazione del file copiato.

In teoria quello che stai chiedendo dovrebbe essere possibile se si utilizza sgonfiare compressione (che memorizza tutti i file come un elemento compressa singolarmente).

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top