使用 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#)的主要内容,如果未能解决你的问题,请参考以下文章

jquery textarea 设置值但 \n 不起作用

MFC 蓝牙:BluetoothRegisterForAuthentication 不起作用

带有新行的AlertDialog消息。 ( n不起作用。)

换行符 \n 从 Firebase 加载文本时不起作用

C# streamwriter方法写入汉字时乱码

Paypal:快速结帐自定义 PAYMENTREQUEST_n_TRANSACTIONID 不起作用