كيف يمكنني نسخ دليل داخل أرشيف الرمز البريدي إلى أرشيف Zip الثاني باستخدام Rubyzip؟

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

  •  21-09-2019
  •  | 
  •  

سؤال

لدي أرشيف .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 لحذف كل شيء ما عدا الدليل المستهدف من الملف المنسق.

من الناحية النظرية ، يجب أن يكون ما تطلبه ممكنًا إذا كنت تستخدم الضغط المنهج (الذي يخزن كل ملف كعنصر مضغوط بشكل فردي).

مرخصة بموجب: CC-BY-SA مع الإسناد
لا تنتمي إلى StackOverflow
scroll top