2008-08-19 10 views
16

के बीच अंतर मैं एक पार्सिंग प्रोग्राम में एक बाइनरी फ़ाइल पढ़ रहा हूं। मुझे फ़ाइल के माध्यम से पुन: प्रयास करना होगा और कुछ मार्करों की तलाश करनी होगी ताकि मैं फ़ाइल को विभाजित कर सकूं और उन हिस्सों को अपने संबंधित ऑब्जेक्ट के रचनाकारों में पास कर सकूं।बाइट सरणी और मेमोरीस्ट्रीम

क्या फ़ाइल को स्ट्रीम के रूप में रखने के लिए कोई फायदा है, या तो मेमोरीस्ट्रीम या फ़ाइलस्ट्रीम, या इसे बाइट [] सरणी में परिवर्तित किया जाना चाहिए?

कीथ

उत्तर

24

byte[] या MemoryStream दोनों को पूरी फ़ाइल को स्मृति में लाने की आवश्यकता होगी। एक MemoryStream वास्तव में एक अंतर्निहित बाइट सरणी के चारों ओर एक रैपर है। सबसे अच्छा तरीका है दो FileStream (इनपुट के लिए एक और आउटपुट के लिए एक)। मौजूदा आउटपुट फ़ाइल को लिखते समय फ़ाइल को अलग करने के लिए इस्तेमाल किए गए पैटर्न की तलाश में इनपुट स्ट्रीम से पढ़ें।

यदि आप अपने परिदृश्य में मूल्य जोड़ते हैं तो आप BinaryReader और BinaryWriter में इनपुट और आउटपुट फ़ाइलों को लपेटने पर विचार करना चाहेंगे।

7

एक MemoryStream मूल रूप से एक धारा इंटरफेस, उदा एक बाइट सरणी है क्रमिक पढ़ने/लेखन और वर्तमान स्थिति की अवधारणा।