web-dev-qa-db-ja.com

StreamWriterでは機能しません\ n(C#)

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

Output.txtを開くと、\ nまたは\ ra█(表示されない記号を意味します)が表示され、文字列全体が1行に表示されます...後でテキストが関数を渡すため、テキストを書き込むことができません実際の文字列が同じ行にあるのか新しい行にあるのかわからないので、.WriteLineを使用します。

何が悪いのですか?

助けてくれてありがとう。

17
Waronius

使用する Environment.NewLine行区切りとして、または"\r\n"手作業で行いたい場合。

36
Alexei Levenkov

行区切り(newLine)は\r\nない\n\r

テキストを次のように変更します。

       string text = "l1\r\nl2\r\nl3\r\nl5";
2
Yogendra Singh

string text = @"l1\n\rl2\n\rl3\n\nl5";をお試しください。文字詰めを防ぐため。

0
Michael Sallmen

クラスを作成して「\ in」を分離しようとしましたが、リッチテキストボックスを見つけました!!

うん!できます:

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

次のようにEnvironment.NewLineを使用できます。

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

これはバイナリ形式です:

writer.Write(text); 

これは行順フォーマットです:

writer.WriteLine(text); 

WriteLine形式を使用する必要があります...

0
Jorge Lola