为什么我的程序会覆盖文件中的同一行?
我希望每次使用StreamWriter
时都记录一行。
String path = @"c:\Observer\Employer\Employer.txt";
TextWriter write1 = new StreamWriter(path);
if (!File.Exists(path))
{
File.Create(path);
TextWriter write2 = new StreamWriter(path);
write2.WriteLine(Info);
write2.Close();
}
else if (File.Exists(path))
{
write1.WriteLine(Info);
write1.Close();
}
write1.Close();
答案 0 :(得分:5)
默认情况下,您使用的重载会覆盖该文件。以下是封面内容:
public StreamWriter(String path)
: this(path, false, UTF8NoBOM, DefaultBufferSize) {
}
第二个参数告诉它是追加(true)还是覆盖(false)。
您必须明确告诉它将文本附加到文件中:
TextWriter write1 = new StreamWriter(path, true);
答案 1 :(得分:3)
正如@GrantWinney所写,这是预期的行为。无论如何,您可能只想使用
而不是整个代码File.AppendAllText(path, Info)
代替。它似乎具有您需要的所有功能。见http://msdn.microsoft.com/en-us/library/ms143356.aspx
答案 2 :(得分:0)
您需要在附加模式下打开文件才能添加行。使用可选的第二个参数设置为true,如下所示:
TextWriter write1 = new StreamWriter(path, true);