我编写了以下代码,用现有数据附加数据,但我的代码覆盖了这个
我应该如何对代码追加数据进行更改。
protected void Page_Load(object sender, EventArgs e)
{
fname = Request.Form["Text1"];
lname = Request.Form["Text2"];
ph = Request.Form["Text3"];
Empcode = Request.Form["Text4"];
string filePath = @"E:Employee.txt";
if (File.Exists(filePath))
{
//StreamWriter SW;
//SW = File.CreateText(filePath);
//SW.Write(text);
//SW.Close();
FileStream aFile = new FileStream(filePath, FileMode.Create, FileAccess.Write);
StreamWriter sw = new StreamWriter(aFile);
sw.WriteLine(Empcode);
sw.WriteLine(fname);
sw.WriteLine(lname);
sw.WriteLine(ph);
sw.WriteLine("**********************************************************************");
sw.Close();
aFile.Close();
}
else
{
//sw.Write(text);
//sw.Flush();
//sw.Close();
//StreamWriter SW;
//SW = File.AppendText(filePath);
//SW.WriteLine(text);
//SW.Close();
FileStream aFile = new FileStream(filePath, FileMode.Append, FileAccess.Write);
StreamWriter sw = new StreamWriter(aFile);
sw.WriteLine(Empcode);
sw.WriteLine(fname);
sw.WriteLine(lname);
sw.WriteLine(ph);
sw.WriteLine("**********************************************************************");
sw.Close();
aFile.Close();
//System.IO.File.WriteAllText(filePath, text);
}
Response.Write("Employee Add Successfully.........");
}
答案 0 :(得分:13)
FileMode.Append的doc说:
打开文件(如果存在)并搜索到文件末尾,或创建新文件。此操作需要FileIOPermissionAccess.Append权限。 FileMode.Append只能与FileAccess.Write一起使用。尝试在文件结束之前寻找某个位置会抛出IOException异常,并且任何读取尝试都会失败并抛出NotSupportedException异常。
因此if
语句不再需要,因为如果文件不存在,FileMode.Append
会自动创建该文件。
因此,完整的解决方案将是:
using (FileStream aFile = new FileStream(filePath, FileMode.Append, FileAccess.Write))
using (StreamWriter sw = new StreamWriter(aFile)) {
sw.WriteLine(Empcode);
sw.WriteLine(fname);
sw.WriteLine(lname);
sw.WriteLine(ph);
sw.WriteLine("**********************************************************************");
}
提示:使用using
因为它会在发生异常时自动关闭资源。
答案 1 :(得分:5)
您正在创建文件(如果存在),如果不存在则附加文件。这与你想要的相反。
将其更改为:
if (!File.Exists(filePath))
答案 2 :(得分:3)
你必须把
if (!File.Exists(filePath))
而不是
if (File.Exists(filePath))
答案 3 :(得分:1)
将File.Exists(filePath)
更改为!File.Exists(filePath)
甚至更好,总是使用追加模式。如果文件不存在,它将创建文件
答案 4 :(得分:0)
在我看来if和else语句必须相反,不是吗?
现在您创建文件(如果存在),并在文件不存在时添加。 (如果该文件尚不存在,则附加也会创建该文件。)