我有一个奇怪的情况,我不理解与'\n'
我发送到文件的换行符有关的情况。换行符似乎没有根据 和 的NewLine
属性TextWriter
进行处理Environment
。此代码演示:
String baseDir = Environment.GetEnvironmentVariable("USERPROFILE") + '\\';
String fileName = baseDir + "deleteme5.txt";
FileInfo fi = new FileInfo(fileName);
fi.Delete();
FileStream fw = new FileStream(fileName, FileMode.CreateNew, FileAccess.Write);
StreamWriter sw = new StreamWriter(fw);
Console.WriteLine(Environment.NewLine.Length);
Console.WriteLine(sw.NewLine.Length);
sw.Write("1\uf0f1\n2\ue0e1\n3\ud0d1\n");
sw.Flush();
sw.Close();
当我运行这个控制台输出是
2
2
当我以十六进制模式查看文件时,我得到:
00000000h:31 EF 83 B1 0A 32 EE 83 A1 0A 33 ED 83 91 0A;1.2.3íƒ'。
显然,API 说了两个字符,当您查看文件时,只有一个字符。现在,当我查看 TextWriter 中 Write 方法的描述时,它表明 Write 方法不会用 NewLine 属性替换 0A。好吧,如果 Write 方法没有考虑到这一点,那么没有一个而是两个 NewLine 属性有什么用呢?这些东西是干什么用的?