将信息附加到文本文件

时间:2011-05-11 11:49:06

标签: c# asp.net

我有一个网站,我将记录添加到数据库中,而且我也写入了一个日志文件,该文件是网站的一部分。 信息被写入文件中...我唯一的问题是如何将每个输入的信息添加到数据库中。 由于目前信息被放入lof文件中,但每次新插入数据库时​​,日志文件中的现有记录似乎被覆盖并替换为新插入,因此始终只有一条记录被添加到日志文件。 建议也许...... 这是我在btnClick事件中使用的代码。

protected void btnSubmitRating_Click1(object sender, EventArgs e)
{
    int rating = 0;
    try
    {
        if (radRating.Items[0].Selected)
        {
            rating = 1;
        }
        if (radRating.Items[1].Selected)
        {
            rating = 2;
        }
        else if (radRating.Items[2].Selected)
        {
            rating = 3;
        }
        else if (radRating.Items[3].Selected)
        {
            rating = 4;
        }
        else if (radRating.Items[4].Selected)
        {
            rating = 5;
        }
        FileStream rate = new FileStream(Server.MapPath("~/rateBooks.log"), FileMode.Open, FileAccess.ReadWrite);
        BufferedStream bs = new BufferedStream(rate);
        rate.Close();


        StreamWriter sw = new StreamWriter(Server.MapPath("~/rateBooks.log"));
        sw.WriteLine("userName " + txtUserName.Text + " " + "bookTitle " + txtBookTitle.Text + " " + "ISBN " + txtISBN.Text);
        sw.Close();


        Service s = new Service();
        s.bookRatedAdd(txtBookTitle.Text, rating, txtReview.Text, txtISBN.Text, txtUserName.Text);
        btnSubmitRating.Enabled = false;
        radRating.Enabled = false;            
    }
    catch (Exception em)
    {
        lblError.Text = em.Message; 
        //lblError.Text = "This book has already been reviewed by yourself?";
    }
}

亲切的问候

2 个答案:

答案 0 :(得分:5)

更改整个代码块:

FileStream rate = new FileStream(Server.MapPath("~/rateBooks.log"), FileMode.Open, FileAccess.ReadWrite);
BufferedStream bs = new BufferedStream(rate);
rate.Close();

StreamWriter sw = new StreamWriter(Server.MapPath("~/rateBooks.log"));
sw.WriteLine("userName " + txtUserName.Text + " " + "bookTitle " + txtBookTitle.Text + " " + "ISBN " + txtISBN.Text);
sw.Close();

到这一行:

File.AppendAllText(Server.MapPath("~/rateBooks.log"), "userName " + txtUserName.Text + " " + "bookTitle " + txtBookTitle.Text + " " + "ISBN " + txtISBN.Text + Environment.NewLine);

请注意,我现在手动NewLine添加到每一行。

答案 1 :(得分:2)

阅读本文:How to: Write to a Text File (C# Programming Guide)

其中,示例#4显示了如何附加到文件:

// Example #4: Append new text to an existing file
using (System.IO.StreamWriter file = new System.IO.StreamWriter(@"C:\Users\Public\TestFolder\WriteLines2.txt", true))
{
  file.WriteLine("Fourth line");
}

所以你可以用你的代码做到这一点,它应该工作:

StreamWriter sw = new StreamWriter(Server.MapPath("~/rateBooks.log"), true);
sw.WriteLine("userName " + txtUserName.Text + " " + "bookTitle " + txtBookTitle.Text + " " + "ISBN " + txtISBN.Text);
sw.Close();

编辑:只需使用Shadow Wizard的答案,它就更清晰......