c#将textbox.text保存到txt文件。 txt文件无法识别行尾字符

时间:2011-01-17 08:31:56

标签: c# text textbox logging text-files

我有以下代码:

void AppendText(string txt)
{
    txt = txt + "\r\n";
    Textbox1.AppendText(txt);
    Textbox1.Select(Textbox1.Text.Length,0);
}

//....

void someFunction()
{
    //...
    string log = @"C:\log.txt";
    using (FileStream fs = new FileStream(log, FileMode.Create))
    {
        using (StreamWriter sw = new StreamWriter(fs))
        {
            sw.Write(Textbox1.Text);
        }
    }
    //...
}  

问题出在表单中的Textbox1.Text字段中,“\ r \ n”工作正常,但是当我将Textbox1.Text复制到log.txt时,log.txt没有新行所在的位置成为。相反,有一个奇怪的字符,如“[]”,其中“\ r \ n”是。我认为问题在于sw.Write(tbox.text)对吗?但我不知道如何解决它。有人能帮我一把吗?非常感谢帮助。提前谢谢。

3 个答案:

答案 0 :(得分:2)

我的猜测是Textbox会创建unicode字符(每个字符两个字节)。 您以什么格式阅读数据? ASCII unicode UTF?

如果我没记错的话/ n / r是一个老字号,可以在字符串中写一个换行符,但格式是什么,这是什么意思? Environment.Newline要好得多,也适用于windows mobile / unix版本。

我通常创建一个名为br的类级变量,其中environment.newline作为其内容,创建更短的代码。

答案 1 :(得分:1)

你应该这样做。

string log = @"C:\log.txt";     
using (FileStream fs = new FileStream(log, FileMode.Create))     
{
     using (StreamWriter sw = new StreamWriter(fs))
     {
         foreach(string line in Textbox1.Lines)
             sw.Write(line+sw.NewLine);
     }
 } 

答案 2 :(得分:1)

您的代码是正确的。只需在sw.Close();

之后添加sw.Write(Textbox1.Text);即可