为什么我不能使用StreamWriter向文件追加一行

本文关键字:追加 一行 文件 不能 StreamWriter 为什么 | 更新日期: 2023-09-27 18:14:29

为什么我的程序覆盖文件中的同一行?

我想让它在每次使用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();

为什么我不能使用StreamWriter向文件追加一行

默认情况下,您使用的重载会覆盖文件。下面是它在被子下面的样子:

public StreamWriter(String path) 
    : this(path, false, UTF8NoBOM, DefaultBufferSize) {
}

第二个参数告诉它是追加(true)还是覆盖(false)。

你必须明确地告诉它将文本附加到文件中:

TextWriter write1 = new StreamWriter(path, true);

正如@GrantWinney所写,这是预期的行为。无论如何,您可能只想使用

而不是整个代码。
File.AppendAllText(path, Info)

。它似乎有你需要的所有功能。见http://msdn.microsoft.com/en-us/library/ms143356.aspx

您需要以追加模式打开文件以便向其中添加行。将第二个可选参数设置为true,如下所示:

TextWriter write1 = new StreamWriter(path, true);