How can I add entries to an existing zip file in Java? -


संभव डुप्लिकेट:

एक ज़िपऑटपुटस्ट्रीम के साथ फ़ाइल को खोलना इसे ओवरराइट करता है। क्या फाइल रखने और बस नई प्रविष्टियां जोड़ना कोई तरीका है?

फ़ंक्शन मौजूदा ज़िप फ़ाइल का नाम बदलता है एक अस्थायी फ़ाइल के लिए और फिर नई फ़ाइलों के साथ मौजूदा ज़िप में सभी प्रविष्टियां जोड़ती हैं, ज़िप प्रविष्टियों को छोड़कर जो नई फ़ाइलों में से एक के समान नाम रखती हैं।

  public static void addFilesToExistingZip (फ़ाइल zipfile, फ़ाइल [] फ़ाइलें) IOException {फेंकता // एक अस्थायी फ़ाइल फ़ाइल tempfile = File.createTempFile (zipFile.getName (), नल) मिलता है, // इसे हटा दें, अन्यथा आप इसे अपने मौजूदा ज़िप का नाम बदल नहीं सकते। tempFile.delete (); बूलियन नाम बदलें ओक = ज़िपफ़ाइल.रेमेनटे (टेम्फफ़ाइल); if (! renameOk) {नई RuntimeException फेंक ( "फ़ाइल का नाम नहीं कर सकता" + zipFile.getAbsolutePath () + "के लिए" + tempFile.getAbsolutePath ()); } बाइट [] buf = नया बाइट [1024]; ज़िप इनपुटस्ट्रीम ज़िन = नया ज़िप इनटस्टस्ट्रीम (नया फ़ाइल इन्पुटस्ट्रीम (टेम्पकेफ़ाइल)); ZipOutputStream आउट = नया ज़िपऑउटपुटस्ट्रीम (नया FileOutputStream (ज़िपफ़ाइल)); ज़िप एंट्री प्रविष्टि = zin.getNextEntry (); जबकि (प्रवेश! = नल) {स्ट्रिंग नाम = entry.getName (); बूलियन नॉट इन्फ़ाइल = सच; के लिए (फ़ाइल च: फ़ाइलें) {if (f.getName ()। बराबर (नाम)) {notInFiles = false; टूटना; }} यदि (नहीं इनफ़ाईल्स) {// आउटपुट स्ट्रीम में ज़िप प्रविष्टि जोड़ें Out.putNextEntry (नया ज़िपईंट्री (नाम)); // ज़िप फ़ाइल से आउटलुक फ़ाइल में लेनदेन बाइट्स स्थानांतरण; जबकि ((लेन = ज़िन। रीड (बफ़)) gt; 0) {out.write (buf, 0, len); }} प्रवेश = zin.getNextEntry (); } // धारा बंद करें zin.close (); // फाइलों को संपीड़ित करें (इंट आई = 0; आई और एलटी; फाइलें। लैंप; आई ++) {इनपुटस्ट्रीम इन = नई फाइल इनटस्टस्ट्रीम (फाइलें [आई]); // आउटपुट स्ट्रीम में ज़िप प्रविष्टि जोड़ें। Out.putNextEntry (नई ज़िपईंट्री (फ़ाइलें [i] .getName ())); // फ़ाइल से फ़ाइल बाइट को स्थानांतरित करें; जबकि ((लेन = आर.ई.आर.ईड (buf)) gt; 0) {out.write (buf, 0, len); } // प्रविष्टि को पूरा करें। समापन करें (); in.close (); } // ज़िप फ़ाइल को पूरा करें। Close (); tempFile.delete (); }  

Comments

Popular posts from this blog

windows - Heroku throws SQLITE3 Read only exception -

lex - Building a lexical Analyzer in Java -

python - rename keys in a dictionary -