2014-05-12 9 views
17

में एक ज़िप फ़ाइल बनाएं मैं एक फ़ाइल ज़िप करने की कोशिश कर रहा हूं (उदाहरण के लिए foo.csv) और इसे किसी सर्वर पर अपलोड करें। मेरे पास एक वर्किंग वर्जन है जो एक स्थानीय प्रति बनाता है और फिर स्थानीय प्रतिलिपि हटा देता है। मैं एक फाइल को कैसे ज़िप करूं ताकि मैं इसे हार्ड ड्राइव पर लिखने के बिना भेज सकूं और इसे पूरी तरह स्मृति में कर सकता हूं?मेमोरी

उत्तर

45

कार्य को पूरा करने के लिए ZipOutputStream के साथ ByteArrayOutputStream का उपयोग करें।

आप ज़िप फ़ाइल में शामिल करने के लिए फ़ाइलों को निर्दिष्ट करने के लिए ZipEntry का उपयोग कर सकते हैं।

यहाँ ऊपर वर्गों का उपयोग का एक उदाहरण है,

String s = "hello world"; 

ByteArrayOutputStream baos = new ByteArrayOutputStream(); 
try(ZipOutputStream zos = new ZipOutputStream(baos)) { 

    /* File is not on the disk, test.txt indicates 
    only the file name to be put into the zip */ 
    ZipEntry entry = new ZipEntry("test.txt"); 

    zos.putNextEntry(entry); 
    zos.write(s.getBytes()); 
    zos.closeEntry(); 

    /* use more Entries to add more files 
    and use closeEntry() to close each file entry */ 

    } catch(IOException ioe) { 
    ioe.printStackTrace(); 
    } 

अब baos एक stream

+0

सुनिश्चित करें कि आप पास() को कॉल करते हैं

यहाँ ट्यूटोरियल है ब्लॉक, या बेहतर: जावा 7 के स्वचालित संसाधन प्रबंधन का उपयोग करें। – Puce

+0

@Puce: मेरा उद्देश्य केवल एक स्निपेट दिखाना था, लेकिन आपकी टिप्पणी के बाद मुझे लगा कि एक और संरचित कोड जोड़ना अच्छा होगा। टिप्पणी के लिए धन्यवाद .. :) –

+0

@ ब्लैकपैंथर क्या आप स्थानीय निर्देशिका में मूल फ़ाइल मौजूद होने के लिए विस्तृत संस्करण दिखा सकते हैं/विस्तृत संस्करण दिखा सकते हैं। –

3

NIO.2 एपीआई के रूप में के रूप में अपने ज़िप फ़ाइल, था जो जावा SE 7 में परिचय होता है, का समर्थन करता है कस्टम फाइल सिस्टम आप https://github.com/marschall/memoryfilesystem और ओरेकल द्वारा प्रदान की गई ज़िप फ़ाइल प्रणाली जैसे इन-मेमोरी फाइल सिस्टम को गठबंधन करने का प्रयास कर सकते हैं।

नोट: मैंने ज़िप फ़ाइल सिस्टम के साथ काम करने के लिए कुछ उपयोगिता कक्षाएं लिखी हैं।

लाइब्रेरी ओपन सोर्स है और यह आपको शुरू करने में मदद कर सकती है। http://softsmithy.sourceforge.net/lib/0.4/docs/tutorial/nio-file/index.html

आप यहाँ से डाउनलोड कर सकते हैं पुस्तकालय: http://sourceforge.net/projects/softsmithy/files/softsmithy/v0.4/

या Maven के साथ: - एक अंत में विधि

<dependency> 
    <groupId>org.softsmithy.lib</groupId> 
    <artifactId>softsmithy-lib-core</artifactId> 
    <version>0.4</version> 
</dependency> 
संबंधित मुद्दे