2013-09-24 4 views
5

मुझे जावा के साथ ज़िप फ़ाइल में निर्देशिका संरचना को ज़िप करने के कई तरीकों का प्रयास किया गया है। कोई फर्क नहीं पड़ता कि मैं ZipOutputStream या जावा एनआईओ ज़िप FileSystem का उपयोग करता हूं, मैं बस ज़िप फ़ाइल में खाली फ़ोल्डर्स नहीं जोड़ सकता।जावा के साथ एक ज़िप फ़ाइल के अंदर फ़ोल्डर संरचना को दोबारा बनाना - खाली फ़ोल्डर्स

मैंने यूनिक्स ज़िप के साथ प्रयास किया, और यह अपेक्षित काम करता है, इसलिए मैंने संभावित रूप से ज़िप-प्रारूप समस्या को त्याग दिया।

मैं फ़ोल्डरों के अंदर एक खाली फ़ाइल जोड़कर थोड़ा कामकाज भी कर सकता था, लेकिन मैं वास्तव में ऐसा नहीं करना चाहता हूं।

जावा एपीआई का उपयोग कर ज़िप फ़ाइलों में खाली फ़ोल्डर जोड़ने का कोई तरीका है?


संपादित: जवाब और टिप्पणियों, this is pretty much the solution I got के आधार पर।

धन्यवाद!

उत्तर

4

जावा एनआईओ इसे सामान्य फ़ाइल सिस्टम के साथ काम करने जितना आसान बनाता है।

public static void main(String[] args) throws Exception { 
    Path zipfile = Paths.get("C:\\Users\\me.user\\Downloads\\myfile.zip"); 

    try (FileSystem zipfs = FileSystems.newFileSystem(zipfile, null);) { 
     Path extFile = Paths.get("C:\\Users\\me.user\\Downloads\\countries.csv"); // from normal file system 
     Path directory = zipfs.getPath("/some/directory"); // from zip file system 
     Files.createDirectories(directory); 
     Files.copy(extFile, directory.resolve("zippedFile.csv")); 
    } 
} 

दिया निर्देशिका में myfile.zip फ़ाइल को देखते हुए, newFileSystem कॉल (.zip ज्यादातर इसे इस मामले में दूर देता है) फ़ाइल प्रकार का पता लगाने और एक ZipFileSystem पैदा करेगा। फिर आप ज़िप फ़ाइल सिस्टम में पथ (निर्देशिका या फ़ाइलें) बना सकते हैं और फ़ाइलों को बनाने और कॉपी करने के लिए जावा एनआईओ Files एपीआई का उपयोग कर सकते हैं।

उपरोक्त ज़िप फ़ाइल फ़ाइल की रूट पर निर्देशिका संरचना /some/directory बना देगा और उस निर्देशिका में ज़िप फ़ाइल शामिल होगी।

+0

हाँ, लेकिन मैं केवल खाली फ़ोल्डर्स के साथ एक ज़िप बनाना चाहता हूं ... धन्यवाद – caarlos0

+1

@ caarlos0 फिर किसी भी फाइल को कॉपी न करें ... बस 'Files.createDirectories' का उपयोग करें। –

+0

अच्छा, यह काम किया, धन्यवाद! – caarlos0

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