मैं एक gzipped फ़ाइल में यादृच्छिक उपयोग करने में सक्षम होना चाहते हैं। मैं इस पर कुछ प्रीप्रोसेसिंग करने का जोखिम उठा सकता हूं (कहें, किसी प्रकार की अनुक्रमणिका बनाएं), बशर्ते प्रीप्रोसेसिंग का परिणाम फ़ाइल से बहुत छोटा हो।यादृच्छिक अभिगम gzip स्ट्रीम
कोई सलाह?
मेरे विचार थे:
- हैक एक मौजूदा gzip कार्यान्वयन पर और हर, कहते हैं, 1 संकुचित डेटा की मेगाबाइट अपने decompressor राज्य को क्रमानुसार। फिर यादृच्छिक पहुंच करने के लिए, डिकंप्रेसर राज्य को deserialize और मेगाबाइट सीमा से पढ़ें। यह विशेष रूप से के बाद से मैं जावा के साथ काम कर रहा हूँ, कठिन लगता है और मैं एक शुद्ध जावा gzip कार्यान्वयन :(
- 1 एमबी की मात्रा में फ़ाइल पुन: सेक और इसके बाद के संस्करण के रूप में भी ऐसा ही नहीं पा सके। यह दोहरीकरण का नुकसान है आवश्यक डिस्क स्थान
- gzip प्रारूप का एक साधारण पार्सर लिखें जो कोई डिकंप्रेसर नहीं करता है और केवल ब्लॉक सीमाओं का पता लगाता है और अनुक्रमणित करता है (यदि यहां तक कि कोई भी ब्लॉक हैं: मैंने अभी तक gzip प्रारूप विवरण नहीं पढ़ा है)
धन्यवाद एक नजर है, कि अच्छा है! अगर मुझे केवल जावा से आराम से उपयोग करने का कोई तरीका मिला .. – jkff
@jkff: यदि आपको क्रॉस-प्लेटफ़ॉर्म परिनियोजन की आवश्यकता नहीं है, तो जेएनए देखें। सी पुस्तकालयों को कॉल करने के तरीके के रूप में उपयोग करना आश्चर्यजनक रूप से आसान है। –
फिर से धन्यवाद, मैंने ऐसा किया और यह एक आकर्षण की तरह काम करता है!रेक्स, आपको भी धन्यवाद: मैंने जेएनए का उपयोग किया :) – jkff