Wie kann ich kopieren Sie ein Verzeichnis in einem ZIP-Archiv zu einem zweiten Zip-Archiv rubyzip mit?

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

  •  21-09-2019
  •  | 
  •  

Frage

Ich habe ein ZIP-Archiv mit mehreren Verzeichnissen. Mit Hilfe der rubyzip Juwel Ich möchte in das ZIP-Archiv gelangen, kopieren Sie ein bestimmtes Verzeichnis (und dessen Inhalt) und das Verzeichnis in ein zweites .zip-Archiv verschieben.

Im Idealfall würde ich nicht den Inhalt des ersten .zip-Archivs extrahieren muß, dann wieder zip sie in ein zweites Archiv. Ich hoffe, es gibt eine Möglichkeit, Methoden in dem rubyzip Juwel zu nutzen.

War es hilfreich?

Lösung

Nach einem der Maintainer der rubyzip gem Überprüfung, ich habe gelernt, dass dies nicht möglich ist.

Andere Tipps

Die RubyZip Bibliothek muss seitdem aktualisiert worden ist, sie zu unterstützen. Das funktioniert für mich.

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

Für die Versionen von RubyZip <1.0, require 'zip/zip' statt und Verwendung Zip::ZipFile statt Zip::File

Das ist ein bisschen eine Brute-Force-Methode (und kann oder auch nicht für Ihre Anwendung), aber man konnte die gesamte erste Zip-Datei kopieren und dann rubyzip Methoden zu löschen alles, aber das Zielverzeichnis aus der kopierten Datei verwenden.

Theoretisch, was Sie fordern sollte möglich sein, wenn Sie deflate Kompression verwenden (die speichert jede Datei als einzeln komprimiert Artikel).

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top