web-dev-qa-db-fra.com

Avec StreamWriter ne fonctionne pas\n (C #)

J'ai un problème avec le C # Stream Writer . J'utilise le code suivant:

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

Lorsque j'ouvre Output.txt, il indique\n ou\ra █ (ce qui signifie que le symbole ne peut pas être affiché) et que la chaîne entière est sur une ligne ... Plus tard, si le texte devait passer la fonction, je ne peux donc pas écrire le texte avec .WriteLine parce que je ne sais pas si la chaîne réelle est sur la même ligne ou dans une nouvelle ligne.

Qu'est-ce qui me fait mal?

Merci pour toute aide.

14
Waronius

Utilisez Environment.NewLine comme séparateur de ligne ou "\r\n" si vous voulez le faire à la main.

33
Alexei Levenkov

Le séparateur de ligne (newLine) est \r\n et non \n\r,

changez votre texte comme:

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

Essayez string text = @"l1\n\rl2\n\rl3\n\nl5";. Pour éviter le bourrage de personnage.

0
Michael Sallmen

j'ai essayé d'écrire une classe et seprate "\ n" s mais j'ai trouvé la zone de texte riche !!

ouais! Ça marche:

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

Vous pouvez utiliser Environment.NewLine comme ceci:

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

C'est un format binaire:

writer.Write(text); 

C'est un format séquentiel de ligne:

writer.WriteLine(text); 

Vous devez utiliser le format WriteLine ...

0
Jorge Lola