2011-11-19 38 views
10

Work gelmez StreamWriter Kullanarak Dosya Unicode Dize yazın:Bu kodu vardır

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

ama onu çalıştırdığınızda ben a.txt içinde herhangi bir "آ" göremiyorum !! A.txt'de herhangi bir dize yok! Bu Boş! Sorun nedir!?! Biri bana yardım edebilir mi???

+1

Ne görüyorsun _do_? Dosyayı açmak için ne kullanıyorsunuz? – Oded

+0

@Oded: Question Düzenlendi –

cevap

27

You StreamWriter asla Close().

Yazmayı bitirdiğinizde writer.Close() numaralı telefonu ararsanız, karakteri görürsünüz.

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

Bu sizin için akışı kapanacak: Bir using açıklamada StreamWriter oluşturulmasını yerleştirilmeli IDisposable

Ama, uygulayan beri.

+1

Ok Teşekkürler. Çalıştı –

5

Uygulamanızı sonlandırmadan önce, ya da Close() numaralı Close() no'lu değilsiniz. StreamWriter, uygulamanızı kapatmadan önce temizlenmesi gereken bir arabellek kullanır veya StreamWriter kapsam dışında kalır, aksi takdirde yazdığınız veriler diske yazılmaz. Uygulamayı indirdikten sonra

Sen Close() çağırabilir - bunun yerine de StreamWriter düzgün bertaraf olur sağlamak için yerine using ifadesini kullanarak öneririm rağmen.

string s = "آ"; 

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

Birkaç ipucu:

  • beklediğiniz biri yerine yazılı dosyada herhangi bir karakter görüyorsunuz? Aksi halde, akışını temizleme ve kapatma
  • StreamWriter, kodlamayı seçmenize gerek kalmadan unicode yazabilmelidir, ancak UTF32 kodlamasını kullanmayı deneyebilirsiniz.

Kontrol How to: Write Text to a File

2

File.WriteAllText("a.txt", s, Encoding.UTF8); kullanmayı deneyin.

0

Takip verme işlemi için tam fonksiyon doğru özel parametreleri; ile excel için bir liste görünümü:

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(); 
     } 
    }