我在我的网站中添加了一个包含多行的文本文件。 我在页面中放了一个文本框(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();
}
如何覆盖文本文件,然后在同一个按钮上单击文本框中显示它?
答案 0 :(得分:6)
StreamWriter
构造函数有几个重载,包括一个指定是否追加或覆盖。
StreamWriter wr = new StreamWriter(Server.MapPath("newtxt.txt"), false);
From MSDN,第二个参数:
确定是否将数据附加到文件。如果文件存在且append为false,则覆盖该文件。如果文件存在且append为true,则数据将附加到文件中。否则,将创建一个新文件。
答案 1 :(得分:5)
Server.MapPath
返回一个包含文件路径的字符串。您可以尝试手动打开文件,然后再将其传递给流编写器。请注意“创建”的FileMode
和Write
的{{3}}。
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
}
}
答案 2 :(得分:3)
查看System.IO.File.WriteAllText方法,如果文件存在,它将覆盖文件,并且只在一行代码中完成。同样,您可以使用System.IO.File.ReadAllText方法轻松获取文件的内容。
protected void Page_Load(object sender, EventArgs e)
{
if (File.Exists(Server.MapPath("newtxt.txt")))
{
TextBox1.Text = System.IO.File.ReadAllText("newtxt.txt");
}
else
{
Response.Write("<script>alert('File does not exists')</script>");
}
}
protected void Button1_Click(object sender, EventArgs e)
{
System.IO.File.WriteAllText("newtxt.txt", TextBox1.Text);
}
答案 3 :(得分:1)
您似乎正在覆盖Button Click处理程序中的文件,然后将其内容附加到TextBox。通过这种方式,客户端看起来已经附加到文件中。
在写入文件之后,在阅读之前尝试按钮单击处理程序中的以下内容:
TextBox1.Text = "";
或者只是不要费心阅读它 - 没有多大意义,因为您写入文件的文本仍然在TextBox中。