2010-03-18 10 views
5

का उपयोग करके ज़िप फ़ाइल उत्पन्न करते समय संपीड़न स्तर सेट करें मेरे पास एक रूबी प्रोग्राम है जो rubyzip मणि का उपयोग कर XML फ़ाइलों का एक निर्देशिका वृक्ष ज़िप करता है। मेरी समस्या यह है कि फ़ाइल भारी होने लग रही है और मैं संपीड़न स्तर को बढ़ाना चाहता हूं, क्योंकि संपीड़न का समय कोई मुद्दा नहीं है।RubyZip

मुझे rubyzip documentation में बनाई गई ज़िप फ़ाइल के लिए संपीड़न स्तर निर्दिष्ट करने का कोई तरीका नहीं मिला।

कोई भी इस सेटिंग को बदलने के बारे में जानता है? क्या कोई और रूबी लाइब्रेरी है जो संपीड़न स्तर निर्दिष्ट करने की अनुमति देती है?

उत्तर

8

यहां कोड है जो मैंने रूबीज़िप आंतरिक को देखकर बनाया है।

level = Zlib::BEST_COMPRESSION 
Zip::ZipOutputStream.open(zip_file) do |zip| 
    Dir.glob("**/*") do |filename| 
     entry = Zip::ZipEntry.new("", filename) 
     entry.gather_fileinfo_from_srcpath(filename) 
     zip.put_next_entry(entry, nil, nil, Zip::ZipEntry::DEFLATED, level) 
     entry.get_input_stream { |is| IOExtras.copy_stream(zip, is) } 
    end 
end 
0

आपको शायद 'ज़िप' प्रोग्राम पर कॉल करके या ज़िप करने के लिए बेहतर तरीके से बेहतर कर्षण मिलेगा।

+0

इस कार्यक्रम का उद्देश्य कई प्लेटफॉर्म पर चलाना है। मैं उपयोगकर्ता को अपने ज़िप प्रोग्राम को निर्दिष्ट करने और इसका उपयोग करने के लिए मजबूर नहीं करना चाहता हूं। मैं रूबी समाधान पसंद करूंगा। धन्यवाद –

+1

स्रोत में डाइविंग तब आपका एकमात्र विकल्प हो सकता है। – rogerdpack

संबंधित मुद्दे