2016-02-21 7 views
5

मैं किसी भी समय प्रोग्राम को खोजने पर खोज लॉग करने के लिए StreamWriter का उपयोग करने का प्रयास कर रहा हूं। मैं स्ट्रीमवाइटर को एक नई फाइल लिखने के लिए प्राप्त कर सकता हूं लेकिन यह कोई सामग्री नहीं बनाता है। मैंने Google को उचित उपयोग के लिए खोज करने का प्रयास किया है और मेरे लिए ऐसा लगता है कि मैंने इसे सही तरीके से किया है। यदि आप मेरा कोड पढ़ सकते हैं और मुझे बता सकते हैं कि मैं कहां गलत हूं तो मैं बहुत आभारी रहूंगा! "शीर्षक === $ 100.00"सी # - स्ट्रीमवाइटर मेरी फाइल बना रहा है लेकिन कोई सामग्री

उत्तर

9

आप लेखक बंद नहीं किया है:

StreamWriter write = new StreamWriter("searchLogFile.dat"); 
write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 

तो यह की तर्ज पर एक लाइन कुछ प्रिंट चाहिए। लेखक डेटा बफर करता है, इसलिए यदि आप इसे फ्लश करने या बंद करने के बिना कचरा इकट्ठा करने देते हैं, तो फाइल हैंडल फ़ाइल को डेटा लिखने के बिना बंद कर दिया जाएगा।

आप आदर्श रूप से एक using बयान के साथ ऐसा करना चाहिए:

using (StreamWriter write = new StreamWriter("searchLogFile.dat")) 
{ 
    write.WriteLine(gameTitle + " === " + string.Format("{0:C}", saleValue)); 
} 

इस तरह लेखक भले ही एक अपवाद फेंक दिया है बंद कर दिया जाएगा। लागू करने वाले प्रकारों के लिए using कथन का उपयोग करने की आदत में शामिल हों।

यदि आप केवल एक फ़ाइल में एक मान लिखना चाहते हैं तो मैं File.WriteAllText का उपयोग करने का सुझाव भी दूंगा।

writer.WriteLine("{0} === {1:C"}, gameTitle, saleValue); 

या साथ सी # 6::

File.WriteAllText("searchLogFile.dat", $"{gameTitle} === {saleValue:C}"); 
:

writer.WriteLine($"{gameTitle} === {saleValue:C}"); 

या सभी एक ही बार में आप भी इस कोड को सरल बनाने के TextWriter.WriteLine जो प्रारूप तार स्वीकार की भार के उपयोग कर सकते हैं

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