2011-11-19 6 views
10

मैं इस कोड है:एक फ़ाइल StreamWriter का उपयोग करने में लिखें यूनिकोड स्ट्रिंग काम नहीं करता है

string s = "آ"; 
StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8); 
writer.WriteLine(s); 

लेकिन जब मैं इसे चलाने मैं a.txt में नहीं देख सकते हैं किसी भी "آ" !! A.txt में कोई स्ट्रिंग नहीं है! यह खाली है! समस्या क्या है!?! क्या कोई मेरी मदद कर सकता है???

+1

आपको क्या दिखाई _do_? फ़ाइल खोलने के लिए आप क्या उपयोग कर रहे हैं? – Oded

+0

@ ओडेड: प्रश्न संपादित –

उत्तर

27

तुम कभी Close()StreamWriter

यदि आप लेखन समाप्त करते समय writer.Close() पर कॉल करते हैं, तो आप चरित्र देखेंगे।

लेकिन, यह लागू करता है के बाद से IDisposable आप एक using बयान में StreamWriter के निर्माण लपेट चाहिए:

using(StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8)) 
{ 
    writer.WriteLine(s); 
} 

यह आप के लिए धारा बंद हो जाएगा।

+1

ठीक है धन्यवाद। यह काम किया –

5

यह दिखता करके आप नहीं Flush() आईएनजी या Close()StreamWriter ing से पहले आप अपने आवेदन को समाप्त कर रहे हैं। StreamWriter आंतरिक रूप से एक बफर का उपयोग करता है जिसे आपके आवेदन को बंद करने से पहले फ़्लश करने की आवश्यकता होती है या StreamWriter गुंजाइश से बाहर हो जाता है अन्यथा आपके द्वारा लिखे गए डेटा को डिस्क पर नहीं लिखा जाएगा।

आप Close() कॉल कर सकते हैं संपन्न कर लिए जाने - हालांकि बजाय मैं बजाय एक using कथन का उपयोग भी आश्वस्त करने के लिए है कि अपने StreamWriter ठीक से निपटारा हो जाता है सुझाव है।

string s = "آ"; 

using (StreamWriter writer = new StreamWriter("a.txt", false, Encoding.UTF8)) 
{ 
    writer.WriteLine(s); 
} 
0

कुछ टिप्स:

  • आप एक जैसा कि आप उम्मीद के स्थान पर लिखा फ़ाइल में किसी भी चरित्र देखते हैं? यदि नहीं, तो आप स्ट्रीम नहीं कर रहे हैं और स्ट्रीम
  • स्ट्रीमवाइटर को एन्कोडिंग चुनने के बिना यूनिकोड लिखने में सक्षम होना चाहिए, लेकिन आप यूटीएफ 32 एन्कोडिंग का उपयोग करने का प्रयास कर सकते हैं।

चेक How to: Write Text to a File

2

File.WriteAllText("a.txt", s, Encoding.UTF8); का उपयोग करें।

0

का पालन करें, निर्यात के लिए पूरा समारोह सूचीदृश्य सही विशेष characteres साथ उत्कृष्टता प्राप्त करने:

private void Exportar() 
    { 
     Encoding encoding = Encoding.UTF8; 

     saveFileDialog1.Filter = "Arquivo Excel (*.xls)|*.xls"; 
     saveFileDialog1.FileName = "logs"; 
     saveFileDialog1.Title = "Exportar para Excel"; 
     StringBuilder sb = new StringBuilder(); 
     foreach (ColumnHeader ch in lstPesquisa.Columns) 
     { 
      sb.Append(ch.Text + "\t"); 
     } 
     sb.AppendLine(); 
     foreach (ListViewItem lvi in lstPesquisa.Items) 
     { 
      foreach (ListViewItem.ListViewSubItem lvs in lvi.SubItems) 
      { 
       if (lvs.Text.Trim() == string.Empty) 
       { 
        sb.Append(" "); 
       } 
       else 
       { 
        string ITEM = Regex.Replace(lvs.Text, @"\t|\n|\r", "");//remover novas linhas 
        sb.Append(ITEM + "\t"); 
       } 
      } 
      sb.AppendLine(); 
     } 
     DialogResult dr = saveFileDialog1.ShowDialog(); 
     if (dr == DialogResult.OK) 
     { 
      StreamWriter sw = new StreamWriter(saveFileDialog1.FileName, false, Encoding.UTF32); 
      sw.Write(sb.ToString()); 
      sw.Close(); 
     } 
    } 
संबंधित मुद्दे