'\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
ファイルを 16 進モードで見ると、次のようになります。
00000000h: 31 EF 83 B1 0A 32 EE 83 A1 0A 33 ED 83 91 0A ; 1�ƒ±.2�.3�ƒ'。
明らかに、API は 2 文字を示していますが、ファイルを見ると 1 文字しかありません。TextWriter の Write メソッドの説明を見ると、Write メソッドが 0A を NewLine プロパティに置き換えていないことがわかります。Write メソッドがそれを考慮していない場合、1 つではなく 2 つの NewLine プロパティを持つことの用途は何ですか? これらは何のためにあるのですか?