में setMethod() के समतुल्य है। मेरे पास एपब 2 प्रारूप में ज़िप फ़ाइलों को बनाने के लिए कुछ मौजूदा कोड है, जो सही तरीके से काम करता है।जावा एनआईओ ज़िप फ़ाइल सिस्टम java.util.zip.ZipEntry
एपब 3 प्रारूप का समर्थन करने के लिए मेरे कोड को अपडेट करने का प्रयास करते हुए, मैंने सोचा कि मैं java.util.zip.ZipFile
के बजाय जावा एनआईओ ज़िप फ़ाइल सिस्टम का प्रयास करूंगा। मैं लगभग एक छोटी वस्तु को छोड़कर वहां हूं।
एपब प्रारूप द्वारा आवश्यक 20 बाइट mimetype
फ़ाइल है जो को असंपीड़ित रूप में ज़िप में डाल दिया जाना चाहिए। java.util.zip.ZipEntry
एपीआई इसे प्राप्त करने के लिए setMethod(ZipEntry.STORED)
प्रदान करता है।
मुझे जावा एनआईओ फाइलसिस्टम एपीआई दस्तावेज़ में इसका कोई संदर्भ नहीं मिल रहा है। क्या ZipEntry.setMethod()
के बराबर है?
संपादित करें 1
ठीक है, तो मैं कैसे गुण प्रदर्शित करने के लिए, और कहा कि उदाहरण के लिए धन्यवाद, लेकिन मैं कैसे जैसे बनाने के लिए एक विशेषता पर किसी भी दस्तावेज़ को नहीं मिल सकता है देखने के (ज़िप : विधि, 0), ओरेकल के अपने ओरेकल पर भी। जावा 7 में एनआईओ एन्हांसमेंट्स मुझे लगता है कि केवल 20% दस्तावेज हैं। विशेषताओं एपीआई दस्तावेज़ बहुत स्पैस है, खासकर गुण कैसे बनाएं।
मुझे लगता है कि मुझे लगता है कि एनआईओ ज़िप फाइल सिस्टम java.util.zip
पर कोई सुधार नहीं हो सकता है, और उसी परिणाम को प्राप्त करने के लिए और कोड की आवश्यकता है।
String contents = "application/epub+zip"; /* contents of mimetype file */
Map<String, String> map = new HashMap<>();
map.put("create", "true");
Path zipPath = Paths.get("zipfstest.zip");
Files.deleteIfExists(zipPath);
URI fileUri = zipPath.toUri(); // here
URI zipUri = new URI("jar:" + fileUri.getScheme(), fileUri.getPath(), null);
try (FileSystem zipfs = FileSystems.newFileSystem(zipUri, map)) {
Path pathInZip = zipfs.getPath("mimetype");
Files.createFile(pathInZip, new ZipFileAttribute<Integer>("zip:method", 0));
byte[] bytes = contents.getBytes();
Files.write(pathInZip, bytes, StandardOpenOption.WRITE);
}
ZipFileAttribute वर्ग विशेषता इंटरफ़ेस का एक न्यूनतम दिया गया है:
संपादित 2
मैं निम्नलिखित की कोशिश की। मैं इसे पोस्ट कर सकता हूं लेकिन यह सिर्फ एक कुंजी-मूल्य जोड़ी (नाम, मान)
इस कोड ने ज़िपफाइल सफलतापूर्वक बनाया है, लेकिन जब मैं ज़िप फ़ाइल को 7zip के साथ खोलता हूं, तो मुझे लगता है कि mimetype फ़ाइल को ज़िप में संग्रहीत किया गया था (8) जो मुझे चाहिए उसकी बजाय जो स्थिर है (0)। तो सवाल यह है कि, मैं विशेषता को सही तरीके से कैसे कोड करूं ताकि यह स्टोर के रूप में संग्रहीत हो।
आप ठीक कह रहे हैं, मैं ** ZipFileSystem.java ** और के OpenJDK कार्यान्वयन पर एक नज़र था उदासी जब लेखन एक ज़िप फ़ाइल विधि "हवा निकाल" करने के लिए hardcoded जाता है और "संग्रहीत" के साथ ओवरराइट नहीं किया जा सकता: 'u.method = METHOD_DEFLATED;' – Codetoffel