2016-06-08 1 views
3

J'ai une chaîne qui a \ n caractère dans certaines parties. Je veux écrire cette chaîne dans un fichier texte. J'essaie Write et WriteLine méthode de streamwriter et dans les deux il écrit dans une seule ligne. Donc, existe-t-il un moyen simple d'écrire cette chaîne en utilisant son nouveau caractère de ligne ou devrait-il le diviser en tableau par le caractère \ n.Comment écrire des chaînes avec un nouveau caractère de ligne utilisant streamwriter en C#?

Microsoft.Win32.SaveFileDialog sfd = new Microsoft.Win32.SaveFileDialog(); 
     sfd.Filter = "g-code|*.gcode;"; 
     if (sfd.ShowDialog() == true) 
     { 
      string path = System.IO.Path.GetFullPath(sfd.FileName); 
      System.IO.StreamWriter writer = new System.IO.StreamWriter(sfd.OpenFile()); 
      writer.Write(GcodeTxt); 
      writer.Dispose(); 
      writer.Close(); 
      MessageBox.Show("File is saved.", "Saved", MessageBoxButton.OK, MessageBoxImage.Information); 
     } 

Exemple GcodeTxt: "G21, métrique est bonne \ n G90; positionnement absolu \ n T0; sélectionner une nouvelle extrudeuse \ n G28, rentrer à la maison \ n G92 E0, RÉGLER extrudeuse \ n M104 S73.0 ; set temperature \ n "

Et le résultat est;

enter image description here

+0

GcodeTxt contient-il une grande quantité de données ou une petite quantité de données? –

+5

Notez que Windows Notepad lit uniquement les fins de ligne '\ r \ n', et pas seulement' \ n'. Essayez d'ouvrir votre fichier dans quelque chose comme le Bloc-notes ++ et voyez si cela semble être le cas. –

+0

Je l'ouvre dans le bloc-notes ++ et c'est ce à quoi je m'attendais. Donc, pour faire cela dans le bloc-notes de Windows dois-je inclure \ r chaque endroit près de \ n? –

Répondre

2

Votre GcodeTxt a probablement \ n formaté comme une chaîne régulière et non un caractère spécial. Même si vous ajoutez \ r \ n à votre texte, il sera simplement formaté en tant que caractères de chaîne normaux.

Utilisation Environment.NewLine au lieu de \n pour les nouvelles lignes croisées env: (@"G21;metric is good!" + Environment.NewLine + @" G90 ;...

2

Fixer le séparateur de ligne dans vos cordes pour correspondre à ce que la plate-forme attend. Windows s'attend à \r\n. Utilisez Environment.NewLine au lieu de "\n". Votre chaîne a été générée dans le mauvais sens. Fixe la façon dont il est construit.

2

Bloc-notes Windows ne lit que CrLf (retour chariot + saut de ligne) les fins de ligne, ce qui est \r\n. Si vous ne mettez qu'un caractère de saut de ligne (\n), le Bloc-notes le rendra comme s'il était écrit sur une seule ligne. Essayez d'ouvrir votre fichier dans quelque chose comme Notepad ++ et il devrait ressembler à ce que vous voulez.

Pour écrire un retour chariot + saut de ligne, utilisez plutôt Environment.NewLine.