2012-11-12 10 views
14

Mam problem z C# Stream Writer. użyć następującego kodu:Z StreamWriter nie działa 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(); 
} 

Kiedy otwieram Output.txt to widać na \ n lub \ ra █ (co nie oznacza, showable symbol) i cały łańcuch jest w jednej linii ... Później powinien tekst przekazuje tę funkcję, więc nie mogę napisać tekstu za pomocą .WriteLine, ponieważ nie wiem, czy właściwy ciąg jest w tej samej linii, czy w nowej linii.

Co sprawia, że ​​się mylę?

Dzięki za pomoc.

+3

Spróbuj '\ r \ n' zamiast' \ n \ r' –

+6

lub nawet lepiej, 'writer.WriteLine' który zrobi to za ciebie –

+0

Odpowiedź tutaj ma kilka przydatnych informacji, a także: http://stackoverflow.com/questions/1885900/order-of-carriage-return-and-new-line-feed –

Odpowiedz

29

Użyj Environment.NewLine jako separatora linii lub "\r\n", jeśli chcesz to zrobić ręcznie.

+2

Piękno 'Environment.NewLine' polega na tym, że nie musisz się martwić o prawidłowe zestawienie' \ r \ n' dla konkretnego środowiska, w którym działa twój kod. –

+0

OK, dzięki temu zastąpię przychodzący \ n przez \ r \ n. – Waronius

-2

Wypróbuj string text = @"l1\n\rl2\n\rl3\n\nl5";. Aby zapobiec wypychaniu postaci.

1

Linia Separator (znak nowej linii) jest \r\n nie \n\r,

zmiana tekstu jak:

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

ten jest w formacie binarnym:

writer.Write(text); 

Jest to linia sekwencyjny format:

writer.WriteLine(text); 

Musisz użyć formatu WriteLine ...

0

Można użyć Environment.NewLine takiego:

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

próbowałem napisać klasę i seprate "\ n" s ale znalazłem bogatego pole tekstowe! !

tak! to działa:

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

możesz użyć rch.NewLine = "\ n \ r"; zmienić nową linię environ –