سؤال

أحاول استخدام Zlib :: Deflate.deflate على ملف ضخم (4 عربات). هناك مشاكل واضحة في القيام بذلك ، أولها لا يمكنني تحميل الملف بأكمله في الذاكرة مرة واحدة. ستعمل Zlib :: gzipwriter ، لأنه يعمل مع تيارات ، لكنه ليس ضغط Zlib. أيه أفكار؟

هل كانت مفيدة؟

المحلول

يمكنك تجربة إنشاء دفق Zlib :: Deflate وتغذية بياناته من ملفك الكبير التدريجي. Zlib :: Deflate :: Diflate يزعم أن يفعل هذا النوع من الأشياء وراء الكواليس.

سيبدو شيء هكذا:

z = Zlib::Deflate.new

File.open "big_uncompressed_file" do |f|
  File.open "big_compressed_file", "w" do |w|
    f.each do |str|
      w << z.deflate str, Zlib::SYNC_FLUSH
    end
  end
end
z.finish
z.close

مستندات روبي زلب

ملاحظات على أعلام تدفق Zlib

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