2012-06-11 34 views
11

我正在使用C#并试图将几行输出到ASCII文件。我遇到的问题是,我的Linux主机是看到这些文件为:如何在没有CRLF的情况下在C#中编写所有行

ASCII text, with CRLF line terminators 

我需要这个文件只是:

ASCII text 

的CRLF会引起一些问题,我希望有C#中的一种方式就是以我想要的方式创建格式化的文件。

我基本上使用此代码:

string[] lines = { "Line1", "Line2" }; 
File.WriteAllLines(myOutputFile, lines, System.Text.Encoding.UTF8); 

有一种简单的方法来创建没有CRLF行终止的文件吗?我可以在Linux端处理它,但是宁可从一开始就以适当的格式创建文件。

+0

出于好奇:你有多少知识/ E使用ASCII或C#如何在内部存储字符串/字符值? – lyrisey

+0

@mikurski,对于C#如何在内部存储值,我没有太多的知识。 – jared

+0

String类的MSDN .NET文档可能对您有用,特别是Replace()方法。见http://msdn.microsoft.com/en-us/library/system.string.aspx – lyrisey

回答

29

假设你还是真正想要的换行符,你只是想换行,而不是回车/换行,你可以使用:

File.WriteAllText(myOutputFile, string.Join("\n", lines)); 

,或者如果你一定要在最后一行太后是一个换行符:

File.WriteAllText(myOutputFile, string.Join("\n", lines) + "\n"); 

(或者,像你说的,你可以解决它在Linux中,例如用dos2unix。)

+0

我相信上面可能会更好File.WriteAllText(myOutputFile,string.Join(“\ n”,lines)+“ \ n“);因为string,Join在元素之间放置了分隔符,但是分隔符必须在每个元素结束后才会出现,否则就会丢失最后一行。 –

+0

@KenBoorom:“但是分隔符必须在每个元素结束后才会出现,否则就会失去最后一行。” - 你不会失去最后一行,最终不会有换行符。尽管如此,我还是将其添加为一个选项。 –

相关问题