2012-04-24 24 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,你會在記事本中正確地看到它。

相關問題