繁体   English   中英

StreamWriter将所有行归档

[英]StreamWriter all lines to file

C#我有一个控制台应用程序,可以读取和写入“人员”详细信息的获取/设置列表。 在我尝试将其也写入文本文件之前,它都可以正常工作。 有人可以告诉我为什么这将“人”详细信息的最后一行写到我的文本文件中而不是整个列表中吗?

        loadData();

        Console.WriteLine("All People");
        //1st query - just select all people
        var queryAllPeople = from person in people  select person;

        foreach (Person p in queryAllPeople)
        {
            using (StreamWriter writer = new StreamWriter("people.txt"))
            {

                writer.WriteLine(p);

            }
            Console.WriteLine(p);
        }

        Console.ReadLine();

将foreach放入using语句中。 您在每次循环时都覆盖文件

您正在为每次迭代编写一个具有相同名称的新文件。 您将需要在循环之外创建StreamWriter

using (StreamWriter writer = new StreamWriter("people.txt"))
{
    foreach (Person p in queryAllPeople)
    {
        writer.WriteLine(p);
        Console.WriteLine(p);
    }
}

您每次都在重新创建文件。 尝试:

using (StreamWriter writer = new StreamWriter("people.txt"))
{
    foreach (Person p in queryAllPeople)
    {
        writer.WriteLine(p);
        Console.WriteLine(p);
    }

}

使用StreamWriter的重载,它接受append作为参数,因此每次都将值附加到文件中。

foreach (Person p in queryAllPeople)
{
  using (StreamWriter writer = new StreamWriter("people.txt", true))
  {

     writer.WriteLine(p);

  }
  Console.WriteLine(p);
}

或者只是将foreach包装在using语句中。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM