我使用C#,我试图输出几行的ASCII文件。 我遇到的问题是,我的Linux主机是看到这些文件为:
ASCII text, with CRLF line terminators
我需要这个文件只是:
ASCII text
该CRLF会引起一些问题,我希望有在C#的方式,只是在创造我想要的方式格式化的文件。
我基本上使用此代码:
string[] lines = { "Line1", "Line2" };
File.WriteAllLines(myOutputFile, lines, System.Text.Encoding.UTF8);
有一个简单的方法来创建没有CRLF行终止的文件吗? 我大概可以在Linux端呵护它,但宁愿只是从一开始就正确的格式创建的文件。
假设你还是真正想要的换行符,你只是想换行,而不是回车/换行,你可以使用:
File.WriteAllText(myOutputFile, string.Join("\n", lines));
或者,如果你一定要在最后一行太后是一个换行符:
File.WriteAllText(myOutputFile, string.Join("\n", lines) + "\n");
(或者,像你说的,你可以解决它在Linux中,例如用dos2unix
。)
@ JonSkeet的回答是一个快速和简单的解决方案。 它的缺点是,它含有分配文本的所有行写入文件之前,一个字符串。 对于大量文本,这可能施压内存管理系统。
另一种是允许流线而无需额外配置是:
public static void WriteAllLines(
string path, IEnumerable<string> lines, string separator)
{
using (var writer = new StreamWriter(path))
{
foreach (var line in lines)
{
writer.Write(line);
writer.Write(separator);
}
}
}