如何使用C#在ASP.NET中覆盖(不附加)文本文件

Bri*_*Roy 4 c# asp.net

我在我的网站中包含了一个包含多行的文本文件.我在页面中放了一个文本框(Multimode = true)和一个按钮.在Page_Load上,textFile中的内容应显示在文本框中.然后用户可以编辑文本框.单击按钮时,应在该文本文件中覆盖TextBox的当前内容(不应附加).

我在文本框中成功显示了文本文件数据.但是在覆盖时,它会附加在文本文件中而不是覆盖.

这是我的代码:

protected void Page_Load(object sender, EventArgs e)
{
    if (File.Exists(Server.MapPath("newtxt.txt")))
    {
        StreamReader re = new StreamReader(Server.MapPath("newtxt.txt"));
        while ((input = re.ReadLine()) != null)
        {
           TextBox1.Text += "\r\n";
           TextBox1.Text += input;              
        }
        re.Close();
    }

    else
    {
        Response.Write("<script>alert('File does not exists')</script>");
    }       
}

protected void Button1_Click(object sender, EventArgs e)
{
    StreamWriter wr = new StreamWriter(Server.MapPath("newtxt.txt"));
    wr.Write("");
    wr.WriteLine(TextBox1.Text);
    wr.Close();
    StreamReader re = new StreamReader(Server.MapPath("newtxt.txt"));
    string input = null;
    while ((input = re.ReadLine()) != null)
    {
        TextBox1.Text += "\r\n";
        TextBox1.Text += input;
    }
    re.Close();
} 
Run Code Online (Sandbox Code Playgroud)

如何覆盖文本文件,然后在同一按钮单击的TextBox中显示它?

mik*_*kel 6

StreamWriter 构造函数有几个重载,包括一个指定是否追加或覆盖.

StreamWriter wr = new StreamWriter(Server.MapPath("newtxt.txt"), false);
Run Code Online (Sandbox Code Playgroud)

从MSDN,第二个参数:

确定是否将数据附加到文件.如果文件存在且append为false,则覆盖该文件.如果文件存在且append为true,则数据将附加到文件中.否则,将创建一个新文件.


And*_*ite 5

Server.MapPath返回包含文件路径的字符串.您可以尝试手动打开文件,然后再将其传递给流编写器.注意FileModeCreate和the FileAccessof Write.

var path = Server.MapPath("newtxt.txt");
using (var fileStream = File.Open(path, FileMode.Create, FileAccess.Write))
{
    using (var writer = new StreamWriter(fileStream))
    {
        // the rest of your code
    }
}
Run Code Online (Sandbox Code Playgroud)