2012-04-24 90 views
2

写人的内容在文件中为什么这些字符串不是以单独的行显示?

姓:ABCD

SecondName:Tsfsdfs

为此,我写了一个示例应用程序

namespace BinaryStream 
{ 
    class Program 
    { 
     static void Main(string[] args) 
     { 
      StreamWriter binWriter = new StreamWriter(@"c:\happybirthday.txt"); 
      string name = "Sachin"; 
      string secondname = "tendulkar"; 
      string wishes = "happy birthday"; 

      string firstname = string.Format("FirstName: {0} \n", name); 
      binWriter.Write(firstname); 
      string sn = string.Format("SecondName: {0} \n", secondname); 
      binWriter.Write(sn); 
      binWriter.Close();   
     } 
    } 
} 

如果我在记事本中打开内容,字符串不会显示在下一行 这是什么原因?格式部分是否正确?

回答

6

您需要使用WriteLine,而不是Write。写入不会将换行符\ cr放在行尾。在文本中放置\ n只放置一个换行符,并且不放置回车符。

+0

他试图将换行符放入字符串本身。 (虽然WriteLine会是这样做的更好的方法...) – Rawling 2012-04-24 15:02:49

+0

它实际上是回车('\ r')换行符以他的格式字符串显示。 – Gabe 2012-04-24 15:03:08

+0

另外,他会看到那些不带记事本的换行符,而不是记事本 – payo 2012-04-24 18:34:00

0

在Windows中新行是\n\r。但有些程序足够智能,只能理解\n。其他人,如记事本 - 不是。

+4

替换\ n's基本上,不是使用字符串转义字符,而是使用'Environment.NewLine' – Tejs 2012-04-24 15:02:23

+0

实际上,换行符是\ r \ n,而不是\ ñ\ r。它的确有所作为。 – 2012-04-24 18:38:56

1

您可能会发现需要一个回车符(CR)和一个换行符(LF)字符的组合,而不仅仅是LF。

所以 - 在你的代码,替换\ n与\ r \ n

+0

...或者使用WriteLine作为Mystere Man指出的! – 2012-04-24 15:02:44

+0

这是一个正确的\ r \ n或\ n \ r。正如约翰所说,它应该是\ n \ r在Windows – Raghav55 2012-04-24 15:05:31

+1

中的换行符\ r \ n - 正如这里所讨论的:http://stackoverflow.com/questions/6539801/reminder-rn-or-nr – 2012-04-24 15:07:33

1

对于初学者来说,要创建一个二进制文件,而不是一个文本文件。这可能使记事本混淆。除了在C#中\ n仅表示LF,您必须使用\ r \ n(CR-LF)。

就这样写:

string[] lines = {"FirstName: Abcd", "SecondName: Tsfsdfs"}; 
System.IO.File.WriteAllLines(@"c:\happybirthday.txt", lines); 
+0

这不是一个C#的东西,它与读取文件的程序有关。记事本需要\ r \ n,winword处理\ n或\ r \ n就好,许多其他程序也一样。 – Servy 2012-04-24 15:08:32

3

你既需要回车和换行。你只有一个换行符。用\ r \ n替换\ n,你会在记事本中正确地看到它。

相关问题