मैं एक त्रुटि लॉगिंग लाइब्रेरी बना रहा हूं जो एक निर्दिष्ट स्थान में एक फ़ाइल बनाता है, फिर उस फ़ाइल में त्रुटि जानकारी सहेजता है, जिसे बाद में एक अलग टास्कर प्रोग्राम द्वारा पढ़ा जा सकता है जिसे मैं संयोजन में लिखना चाहता हूं इस पुस्तकालय के साथ।एकाधिक ऑब्जेक्ट्स को क्रमबद्ध और Deserializing
जिस तरह से मैं इसे सहेज रहा हूं वह बाइनरी प्रारूप में है (BinaryFormatter()
और FileStream()
का उपयोग करके), जहां मैं फ़ाइल में ErrorEntry नामक एक वर्ग को क्रमबद्ध करता हूं और इसे फ़ाइल के अंत में जोड़ता हूं। इसका मतलब यह है कि मेरे पास वापस एररएन्ट्रीज़ की एक श्रृंखला है। मेरे पास यह एक सूची के रूप में नहीं है क्योंकि यह फ़ाइल से किसी सूची में सभी जानकारी को पढ़ने के लिए प्रैक्टिकल प्रतीत नहीं होता है, एक प्रविष्टि जोड़ें, फिर इसे फ़ाइल में वापस सहेजें और संसाधनों को डंप करें। यह केवल एक ही लिखने के आदेश को करने के लिए और अधिक प्रभावी लगता है, और केवल प्रत्येक को अपनी ऑब्जेक्ट के रूप में स्टोर करें जो क्रमबद्ध है।
मेरी समस्या यह है कि मैं सूचियों या व्यक्तिगत वस्तुओं को क्रमबद्ध करने पर कई उदाहरण पा सकते हैं, लेकिन एकाधिक - लेकिन अलग-अलग वस्तुओं पर कुछ भी नहीं। हालांकि मैं उन्हें अलग-अलग ऑब्जेक्ट्स के रूप में सहेजना चाहता हूं, जब मैं उन्हें लोड करता हूं तो मैं ऑब्जेक्ट को पढ़ना चाहता हूं और श्रृंखला को उस ऑब्जेक्ट की सूची के रूप में वापस करना चाहता हूं। मैं कल्पना
while(!EOF)
{
//deserialize each object
//add individual object to a list
}
//return the list of objects
मैं कैसे किसी एक फ़ाइल से प्रत्येक वस्तु deserializing के बारे में जाना होगा करने के लिए कुछ इसी तरह है कि वहाँ? क्या इसमें एक आंतरिक मार्कर है जो उपर्युक्त काम करता है और मुझे बस यह पता लगाने की आवश्यकता है कि यह फ़ाइल का अंत है या नहीं, या मुझे उन्हें पढ़ने के लिए कुछ और करने की ज़रूरत है?
आप क्यों नहीं बस एक 'सूची
@OndrejTucny वह सभी पिछली प्रविष्टियों को लोड किए बिना फ़ाइल में जोड़ना चाहता है। – weston
उन्होंने कहा कि क्यों और यह उचित दिखता है। ऑब्जेक्ट लेवल पर deserialize करने के लिए आपको प्रत्येक प्रविष्टि के बाद डेलीमीटर अनुक्रम लिखना होगा और जब आप फ़ाइल को वापस पढ़ते हैं तो उस पर प्रतिक्रिया दें। – Tommi