2012-02-29 17 views
5

में एक बड़ी (150 एमबी) टेक्स्ट फ़ाइल में पढ़ें, मैं एक रिच टेक्स्ट बॉक्स में 150 एमबी टेक्स्ट फ़ाइल में पढ़ने की कोशिश कर रहा हूं।सी # - एक रिच टेक्स्ट बॉक्स

वर्तमान में, मैं फ़ाइल में प्रत्येक पंक्ति के माध्यम से पुनरावृत्ति करने के लिए स्ट्रीमरडर का उपयोग कर रहा हूं, प्रत्येक पंक्ति को स्ट्रिंगबिल्डर उदाहरण में जोड़ रहा हूं।

यह छोटी फ़ाइलों के लिए काम करता है, लेकिन मुझे बड़ी फाइलें पढ़ने की कोशिश करते समय एक System.OutOfMemory अपवाद मिलता है।

मुझे 150 एमबी फ़ाइल पढ़ने में कोई समस्या नहीं दिख रही है - इसमें बहुत सारी भौतिक मेमोरी है और यह विंडोज 32-बिट एप्लिकेशन एड्रेस स्पेस के भीतर अच्छी तरह से है।

यदि किसी को यहां कोई विचार है कि यह कैसे करना है, तो इसकी सराहना की जाएगी।

मैं अंत में अपना कोड संलग्न करूंगा।

धन्यवाद।

StringBuilder sb = new StringBuilder(); 
using (StreamReader sr = new StreamReader(fileLocation)) 
{ 
    string line; 
    while ((line = sr.ReadLine()) != null) 
    { 
     sb.AppendLine(line); 
    } 
    } 

return sb; 
+0

+1, अच्छा सवाल। –

+1

क्या आप एक स्टैक ट्रेस पोस्ट कर सकते हैं? तो हम देख सकते हैं कि अपवाद कहां होता है। साथ ही, यह संबंधित हो सकता है: http://stackoverflow.com/questions/363680/stringbuilder-for-string-concatenation-throws-outofmemoryexception (स्ट्रिंग बिल्डर्स के संबंध में) – Christoffer

+1

कृपया स्पष्ट करें, क्या यह कोड (पढ़ने का हिस्सा) अपवाद फेंकता है या ऐसा होता है जब आप आरटीबी लोड करते हैं? –

उत्तर

5

उपयोग RichTextBox.LoadFile

http://msdn.microsoft.com/en-us/library/system.windows.forms.richtextbox.loadfile.aspx

मुझे यकीन है कि तुम क्यों एक StringBuilder के पूरे पाठ लोड करना चाहते हैं नहीं कर रहा हूँ। वैकल्पिक रूप से आप FileStream से LoadFile पास कर सकते हैं जो आपके लिए बड़ी फ़ाइल प्रस्तुत करेगा।

+1

मुझे डर है कि यह भी एक सिस्टम में परिणाम .OutOfMemoryException। कोई विचार? –

+0

+1, अच्छा जवाब। मैं अब तक नहीं जानता। –

0

मैं तुम्हें किसी भी तरह इनपुट फ़ाइल का प्रबंधन करना चाहिए लगता है - यह कई कम फ़ाइलों में विभाजित और प्रोग्राम के रूप में या तो कुछ हिस्सों के बीच नेविगेट मान लीजिए ..

150MB फ़ाइल एक असामान्य बात की तरह लगता है। हो सकता है कि आपको फाइल एक के बजाय स्ट्रीम प्रोसेसिंग की तरह स्ट्रीम करना चाहिए।

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