使用 StreamWriter 不起作用 \n (C#)
Posted
技术标签:
【中文标题】使用 StreamWriter 不起作用 \\n (C#)【英文标题】:With StreamWriter doesn't work \n (C#)使用 StreamWriter 不起作用 \n (C#) 【发布时间】:2012-11-01 01:50:38 【问题描述】:我的 C# Stream Writer 有问题。 我使用以下代码:
//Constructor
public EditorTXTFile
FileStream f = File.Create(System.IO.Directory.GetCurrentDirectory() + "\\Output.txt");
f.Close();
//Function AddText
public void AddLogFileText(string text)
string text = "l1\n\rl2\n\rl3\n\nl5";
StreamWriter writer = new StreamWriter(System.IO.Directory.GetCurrentDirectory() + "\\Output.txt", true);
writer.Write(text);
writer.Close();
当我打开 Output.txt 时,它显示为 \n 或 \r 一个 █(这意味着不可显示的符号)并且整个字符串在一行中...... 以后应该文本交出函数,所以我不能用.WriteLine写文本,因为我不知道实际的字符串是在同一行还是在新行。
是什么让我错了?
感谢您的帮助。
【问题讨论】:
试试\r\n
而不是\n\r
或者更好的是,writer.WriteLine
会为您解决问题
这里的答案也有一些有用的信息:***.com/questions/1885900/…
但是当我只写一个 \n (By l5) 时它也应该去。还是不行?
对您的问题没有任何影响,但您应该将 StreamWriter 调用包装在 using
语句中。
【参考方案1】:
试试string text = @"l1\n\rl2\n\rl3\n\nl5";
。防止字符填充。
【讨论】:
【参考方案2】:使用Environment.NewLine
作为行分隔符,如果您想手动操作,请使用"\r\n"
。
【讨论】:
Environment.NewLine
的美妙之处在于,对于代码运行的特定环境,您不必担心 \r\n
的正确组合。【参考方案3】:
行分隔符(newLine) 是 \r\n
而不是 \n\r
,
将您的文本更改为:
string text = "l1\r\nl2\r\nl3\r\nl5";
【讨论】:
【参考方案4】:这是二进制格式:
writer.Write(text);
这是行顺序格式:
writer.WriteLine(text);
你必须使用WriteLine
格式...
【讨论】:
【参考方案5】:你可以像这样使用Environment.NewLine
:
streamWriter.Write(String.Concat(Enumerable.Repeat(Environment.NewLine, n).ToArray()));
【讨论】:
变量n未知【参考方案6】:我尝试编写一个类并分隔 "\n"s 但我找到了富文本框!!
是的!它有效:
RichTextBox rch = new RichTextBox();
rch.Text = cmn;
foreach (string l in rch.Lines)
strw.WriteLine(l);
【讨论】:
你可以使用 rch.NewLine="\n\r";改变新线环境以上是关于使用 StreamWriter 不起作用 \n (C#)的主要内容,如果未能解决你的问题,请参考以下文章