C#编写的一个文件时会忽略\n的字符串

use*_*082 5 c#

我有有"\n"中有一个简单的字符串.它应该写入文件.例如:

var s = new StringBuilder();

s.Append("hello");
s.Append("\n");
s.Append("betty");
s.Append("is");
s.Append("my");
s.Append("\n");
s.Append("name");

string str = s.ToString();
Console.WriteLine(str);
Run Code Online (Sandbox Code Playgroud)

此字符串按预期打印:

hello 
bettyismy
name

现在,当我尝试使用下面写这个字符串的文件:

var w = new StreamWriter(crcFilePath);
w.WriteLine(crcString);
w.Close();
Run Code Online (Sandbox Code Playgroud)

该文件的内容是:

hellobettyismyname

任何想法,为什么它忽略了字符串中的\n.

xr2*_*0xr 7

这可能是应用程序或系统使用的是查看你的文件忽略了换行,不C#忽略它.取而代之的\n,请尝试使用System.Environment.NewLine或\ r \n.见这个问题上\ r和\ N信息.此外,记事本++可以显示白色字符空间包括新的线,可在这样的情况下很方便.


jus*_*sij 7

该文件的内容是:

 helloashnaismyname
Run Code Online (Sandbox Code Playgroud)

实际上这个文件的内容是这样的(以十六进制模式):

==========================================================================
      xDump Version 1.04 - Hex Dump Utility
      Copyright (c) Xidicone Pty Ltd 20013  -  All rights reserved.
==========================================================================
0000: 68 65 6C 6C 6F 0A 62 65   74 74 79 69 73 6D 79 0A | hello.bettyismy. 
0010: 6E 61 6D 65 0D 0A                                 | name..           
==========================================================================
Run Code Online (Sandbox Code Playgroud)

任何想法,为什么它忽略了字符串中的\n.

如通过十六进制转储中可以看出,它没有忽略\n个字符.

问题是,我怀疑你打开记事本文件,并没有行已了解标记的结束,因此它显示是错误的.

更改代码是这一点,并如预期记事本加载文件:

    var s = new StringBuilder();
                s.Append("hello");
                s.Append("\r\n");
                s.Append("betty");
                s.Append("is");
                s.Append("my");
                s.Append("\r\n");
                s.Append("name");
                string str = s.ToString();
Run Code Online (Sandbox Code Playgroud)