我在我的网站中包含了一个包含多行的文本文件.我在页面中放了一个文本框(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中显示它?
StreamWriter 构造函数有几个重载,包括一个指定是否追加或覆盖.
StreamWriter wr = new StreamWriter(Server.MapPath("newtxt.txt"), false);
Run Code Online (Sandbox Code Playgroud)
从MSDN,第二个参数:
确定是否将数据附加到文件.如果文件存在且append为false,则覆盖该文件.如果文件存在且append为true,则数据将附加到文件中.否则,将创建一个新文件.
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)