С StreamWriter не работает \n (С#) - программирование
Подтвердить что ты не робот

С StreamWriter не работает \n (С#)

У меня проблема с С# Stream Writer. Я использую следующий код:

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

Когда я открываю Output.txt, он показывает для \n или\r a █ (что означает не отображаемый символ), и вся строка находится в одной строке... Позже текст должен передать функцию, поэтому я не могу написать текст с помощью .WriteLine, потому что я не знаю, находится ли фактическая строка в одной строке или в новой строке.

Чем я ошибаюсь?

Спасибо за любую помощь.

4b9b3361

Ответ 1

Используйте Environment.NewLine как разделитель строк или "\r\n", если вы хотите сделать это вручную.

Ответ 2

Линейный разделитель (newLine) \r\n не \n\r,

измените свой текст как:

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

Ответ 3

Это двоичный формат:

writer.Write(text); 

Это строковый последовательный формат:

writer.WriteLine(text); 

Вы должны использовать формат WriteLine...

Ответ 4

Вы можете использовать Environment.NewLine следующим образом:

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

Ответ 5

Я попытался написать класс и отделить "\n" s но я нашел богатое текстовое поле!

да! он работает:

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

Ответ 6

Попробуйте string text = @"l1\n\rl2\n\rl3\n\nl5";. Чтобы предотвратить наложение символов.