परिदृश्य - 150 एमबी टेक्स्ट फ़ाइल जो पुराने ईमेल खाते का निर्यात किया गया इनबॉक्स है। एक विशिष्ट उपयोगकर्ता से ईमेल को पर्स करने और खींचने की आवश्यकता है और इन्हें एक नई, एकल फ़ाइल में लिखना है। मेरे पास कोड है जो काम करता है, यह सिर्फ धीमा हो गया है।अनुकूलन सी # फ़ाइल IO
मैं मूल फ़ाइल से कॉपी कहां शुरू/समाप्त करने के लिए मार्कर स्ट्रिंग का उपयोग कर रहा हूं।
StreamReader sr = new StreamReader("c:\\Thunderbird_Inbox.txt");
string working = string.Empty;
string mystring = string.Empty;
while (!sr.EndOfStream)
{
while ((mystring = sr.ReadLine()) != null)
{
if (mystring == strBeginMarker)
{
writeLog(mystring);
//read the next line
working = sr.ReadLine();
while(!(working.StartsWith(strEndMarker)))
{
writeLog(working);
working = sr.ReadLine();
}
}
}
}
this.Text = "DONE!!";
sr.Close();
समारोह है कि नई फ़ाइल चुने गए संदेशों को लिखते हैं::
public void writeLog(string sMessage)
{
fw = new System.IO.StreamWriter(path, true);
fw.WriteLine(sMessage);
fw.Flush();
fw.Close();
}
फिर, यह प्रक्रिया काम करता है
यहाँ मुख्य कार्य है। मुझे एक अच्छी आउटपुट फ़ाइल मिलती है, इसमें काफी समय लगता है और मुझे यकीन है कि इसे तेज़ी से बनाने के तरीके हैं।
बीटीडब्ल्यू - आप मैन्युअल रूप से बंद() के बजाय उपयोग कथन पर विचार करना चाहेंगे - यदि आप अपवाद को दबाते हैं तो यह सुरक्षित है। मेरा उदाहरण दिखाता है ... –
'जबकि (! Sr.EndOfStream)' जबकि समय के साथ अनावश्यक है ((mystring = sr.ReadLine())! = Null) ' –