C# 为什么不';这些字符串是否显示在单独的行中?
将person的内容写入文件中 名字:Abcd 第二名称:Tsfsdfs 为此,我编写了一个示例应用程序C# 为什么不';这些字符串是否显示在单独的行中?,c#,string,C#,String,将person的内容写入文件中 名字:Abcd 第二名称:Tsfsdfs 为此,我编写了一个示例应用程序 namespace BinaryStream { class Program { static void Main(string[] args) { StreamWriter binWriter = new StreamWriter(@"c:\happybirthday.txt"); string
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();
}
}
}
如果我打开记事本中的内容,则字符串不会显示在下一行中
这是什么原因?格式部分正确吗?您需要使用WriteLine,而不是Write。Write不会在行尾放置换行符\cr。在文本中放置\n仅放置换行符,而不放置换行符。新行是windows中的
\n\r
。但是有些程序足够智能,只需理解\n
。其他字符,如记事本,则不是。您可能会发现,您需要回车符(CR)和换行符(LF)的组合,而不仅仅是LF
因此-在代码中,将\n替换为\r\n。首先,您创建的是二进制文件,而不是文本文件。这可能是一个令人困惑的记事本 此外,在C#中\n仅表示LF,您必须使用\r\n(CR-LF) 写下这句话:
string[] lines = {"FirstName: Abcd", "SecondName: Tsfsdfs"};
System.IO.File.WriteAllLines(@"c:\happybirthday.txt", lines);
您需要回车和换行。你只有一个换行。将您的\n替换为\r\n,您将在记事本中正确地看到它。基本上,使用
环境而不是字符串转义字符。换行符实际上是\r\n,而不是\r\n。这确实有区别。他试图把断线放在绳子上。(尽管WriteLine是一种更好的方法…)实际上缺少的是回车(\r
);换行符是以他的格式字符串读取的。此外,他会看到没有写字板的换行符,而不是notepad@payo-这是因为写字板有代码用cr/lf替换独立lf,而记事本没有。@MystereMan它是如何做到的是另一个问题,在旁注中,您如何知道它实际上是注入的\r,并且不只是充分地呈现\n?哪一个是正确的\r\n或\n\r。正如john所说的,Windows中的换行符应该是\n\r它是\r\n-正如这里所讨论的:这不是C的事情,它与程序读取文件有关。记事本需要\r\n,winword处理\r\n或\r\n很好,就像许多其他程序一样。