2012-11-12 11 views
14

Ho un problema con C# Stream Writer. Io uso il seguente codice:Con StreamWriter non funziona n (C#)

//Constructor 
public EditorTXTFile 
{ 
    FileStream f = File.Create(System.IO.Directory.GetCurrentDirectory() + "\\Output.txt"); 
    f.Close(); 
} 

//Function AddText 
public void AddLogFileText(string text) 
{   
    string text = "l1\n\rl2\n\rl3\n\nl5"; 

    StreamWriter writer = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\Output.txt", true); 
    writer.Write(text);   

    writer.Close(); 
} 

Quando apro Output.txt mostra per \ n o \ ra █ (che non significa simbolo showable) e l'intera stringa è in una sola riga ... Più tardi dovrebbe il testo passa la funzione, quindi non posso scrivere il testo con .WriteLine perché non so se la stringa effettiva si trova sulla stessa riga o in una nuova riga.

Che cosa ho sbagliato?

Grazie per qualsiasi aiuto.

+3

Prova '\ r \ n 'piuttosto che' \ n \ R' –

+6

O, meglio ancora, 'writer.WriteLine' che fa per voi –

+0

La risposta qui ha alcune informazioni utili, nonché: http://stackoverflow.com/questions/1885900/order-of-carriage-return-and-new-line-feed –

risposta

29

Utilizzare Environment.NewLine come separatore di linea o "\r\n" se si desidera eseguirlo manualmente.

+2

La bellezza di 'Environment.NewLine' è che non devi preoccuparti della combinazione corretta di \ r \ n' per il particolare ambiente in cui è in esecuzione il tuo codice. –

+0

Ok grazie allora sostituirò un \ n in arrivo tramite \ r \ n. – Waronius

-2

Prova string text = @"l1\n\rl2\n\rl3\n\nl5";. Per evitare il riempimento del personaggio.

1

linea di separazione (UnaRigaVuota) è \r\n non \n\r,

cambiamento il testo come:

 string text = "l1\r\nl2\r\nl3\r\nl5"; 
0

Questo è formato binario:

writer.Write(text); 

Questa è la riga formato sequenziale:

writer.WriteLine(text); 

Bisogna utilizzare il formato WriteLine ...

0

È possibile utilizzare Environment.NewLine come questo:

streamWriter.Write(String.Concat(Enumerable.Repeat(Environment.NewLine, n).ToArray())); 
0

Ho cercato di scrivere una classe e seprate "\ n" s ma ho trovato ricco casella di testo! !

sì! funziona:

 RichTextBox rch = new RichTextBox(); 
     rch.Text = cmn; 
     foreach (string l in rch.Lines) 
      strw.WriteLine(l); 
+0

puoi usare rch.NewLine = "\ n \ r"; cambiare l'ambiente di nuova linea –