2012-06-13 14 views
14

मेरे कोड (asp.net MVC)StreamWriter.Write फ़ाइल में नहीं लिखता है; कोई अपवाद नहीं सी # में फेंक दिया

StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt"); 

// write a line of text to the file 
tw.Write("test"); 

फ़ाइल बनाया है, लेकिन खाली है। कोई अपवाद नहीं फेंक दिया गया है। मैंने इसे पहले कभी नहीं देखा है और मैं यहां फंस गया हूं; मुझे बस कुछ डीबगिंग आउटपुट लिखने की जरूरत है।

कृपया सलाह दें।

+0

बस अगर यह लोगों की अंतर्दृष्टि में मदद करता है, तो कौन सी भाषा?(संभवतः सी ++ या सी #) – akroy

+0

संपादित विवरण देखें – sarsnake

उत्तर

6

उपयोग

System.IO.File.WriteAllText(@"path\te.txt", "text"); 
+2

यह सबसे अच्छा जवाब है - यदि आप जानते हैं कि आउटपुट सामग्री इतनी बड़ी नहीं होगी .. –

40

StreamWriter डिफ़ॉल्ट रूप से बफ़र है, जिसका अर्थ यह नहीं होगा उत्पादन जब तक यह एक फ्लश() या बंद() कॉल प्राप्त करता है।

यदि आप चाहें तो AutoFlush संपत्ति सेट करके आप इसे बदल सकते हैं। अन्यथा, बस करें:

StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt"); 

// write a line of text to the file 
tw.Write("test"); 
tw.Close(); //or tw.Flush(); 
+1

मुझे यह वही समस्या थी- यह पता नहीं लगा कि यह क्यों लिख रहा था सब ठीक था। फ्लश/क्लोज़ के बारे में नहीं पता था। मुझे लगता है कि यह समग्र रूप से सबसे अच्छा जवाब है। (मुझे पता है कि यह पुराना है) – alykins

4

न तो फ्लश और न ही बंद और न ही निपटान। कोशिश इस

using (StreamWriter tw = new StreamWriter(@"C:\mycode\myapp\logs\log.txt")) 
{ 
    // write a line of text to the file 
    tw.Write("test"); 
    tw.Flush(); 
} 

या मेरी प्राथमिकता

using (FileStream fs = new FileStream(@"C:\mycode\myapp\logs\log.txt" 
            , FileMode.OpenOrCreate 
            , FileAccess.ReadWrite)   ) 
{ 
    StreamWriter tw = new StreamWriter(fs); 
    tw.Write("test"); 
    tw.Flush(); 
} 
0

एक वैकल्पिक

FileStream mystream = new FileStream("C:\\mycode\\myapp\\logs\\log.txt",  
FileMode.OpenOrCreate, FileAccess.Write);   
StreamWriter tw = new StreamWriter(mystream); 
tw.WriteLine("test"); 
tw.close(); 
0

कोशिश जैसे

tw.WriteLine("test"); 
tw.Close(); 
1

लाइन के लिए फ़ाइल को बंद करें या \n जोड़ने के लिए हां वीबीनेट में यह आवश्यक नहीं था लेकिन ऐसा लगता है कि सीएसएचआरपी के साथ आपको एक लेखक की आवश्यकता है। लिखने के लिए फ्लश कॉल करें। बेशक Writer.Close() फ्लश को भी मजबूर करेगा।

हम भी StreamWriter उदाहरण के AutoFlush संपत्ति सेट कर सकते हैं:

sw.AutoFlush = true; 
// Gets or sets a value indicating whether the StreamWriter 
// will flush its buffer to the underlying stream after every 
// call to StreamWriter.Write. 

से: http://msdn.microsoft.com/en-us/library/system.io.streamwriter.autoflush(v=vs.110).aspx

1

आप को या तो पास की जरूरत है या लेखन खत्म करने के बाद StreamWriter फ्लश।

using (StreamWriter tw = new StreamWriter("C:\\mycode\\myapp\\logs\\log.txt")){ 
// write a line of text to the file 
tw.Write("test"); 
} 
2
 FileStream fs = new FileStream("d:\\demo.txt", FileMode.CreateNew,    FileAccess.Write); 
     StreamWriter sw = new StreamWriter(fs, System.Text.Encoding.ASCII); 
     int data; 

      sw.Write("HelloWorld"); 

     sw.Close(); 
     fs.Close(); 
  • समस्या है:

    tw.Close(); 
    

    या

    tw.Flush(); 
    

    लेकिन सबसे अच्छा अभ्यास है, क्योंकि StreamWriter लागू करता IDisposable एक बयान का उपयोग करने में उत्पादन कोड रैप करने के लिए है जब StreamWriter ऑब्जेक्ट FileStrea के संदर्भ में बनाया गया है एम ऑब्जेक्ट, एसड ऑब्जेक्ट हमेशा कुछ डेटा की उम्मीद करेगा जब तक कि एसडब्ल्यू ऑब्जेक्ट बंद नहीं हो जाता है।

  • तो sw.Close() का उपयोग करने के बाद; आपकी खुली फ़ाइल बंद हो जाएगी और आउटपुट दिखाने के लिए तैयार हो जाएगी।
संबंधित मुद्दे