如何使用 StreamWriter.WriteLine 方法在 C# 中编写 unix 行结束符 '\n'?

obn*_*ews 2 c# newline

StreamWriter.WriteLineStreamWriter.WriteLine自动编写endofline终止符,但是方法的默认endofline终止符似乎是\r\n,是否可以将其更改为\nunix平台?

我在 Windows 10 上运行代码,它与平台相关吗?我可以在Windows环境下StreamWriter.WriteLine输出带有unix行结束符的文本文件吗\n

这是我的代码:

using System;
using System.IO;

namespace ConsoleApp1
{
    class Program
    {
        static void Main(string[] args)
        {
            StreamWriter sw = new StreamWriter("NewLineText.txt", true);
            for (int i = 0; i < 3; i++)
            {
                sw.WriteLine("new line test" + i);
            }
            sw.Close();
        }
    }
}
Run Code Online (Sandbox Code Playgroud)

Jon*_*eet 7

StreamWriter.WriteLine 自动写入行结束符,但是 StreamWriter.WriteLine 方法的默认行结束符似乎是 '\r\n',对于 unix 平台是否可以将其更改为 '\n' ?

当它在 Unix 上运行时就已经可以使用了\n

我在 Windows 10 上运行代码,它与平台相关吗?

是的。

我可以在 Windows 环境下使用 StreamWriter.WriteLine 输出带有 unix 行结束符 '\n' 的文本文件吗?

是的 - 通过改变NewLine属性。您需要做的就是在调用之前设置属性WriteLine

StreamWriter sw = new StreamWriter("NewLineText.txt", true);
sw.NewLine = "\n"; // Use Unix line endings
// Other code as before
Run Code Online (Sandbox Code Playgroud)

顺便说一句,我还建议使用一个using声明,以便作者得到适当的处理 - 就我个人而言,我通常会使用File.AppendTextor File.CreateText。所以:

using var writer = File.AppendText("NewLineText.txt");
writer.NewLine = "\n"; // Use Unix line endings
for (int i = 0; i < 3; i++)
{
    writer.WriteLine($"new line test {i}");
}
Run Code Online (Sandbox Code Playgroud)