覆盖作家问题

时间:2012-11-30 16:21:55

标签: c# list streamwriter

我正在向一个文件写一个列表,该列表从我输入的文本中获取表单应用程序中的数据。这可以工作,但它会在每次启动表单时覆盖文件,而不是保存它并添加新数据。如何将“AppendAllLines”或“WriteAllLines”添加到此作为解决方案?

     public List<String> listDeliveries()
    {
        List<String> listDeliveries = new List<string>();           
        using (StreamWriter writer = new StreamWriter("Database.txt"))
        {
            foreach (Delivery del in deliveries)
            {
                String delAsString = del.summary();                   

                listDeliveries.Add(delAsString);

                writer.WriteLine(delAsString);                   
            }

        }
        return listDeliveries;

    }

6 个答案:

答案 0 :(得分:2)

var listDeliveries = deliveries.Select(d=>d.summary()).ToList();
File.AppendAllLines("Database.txt", listDeliveries);
return listDeliveries;

答案 1 :(得分:1)

  

如何将“AppendAllLines”或“WriteAllLines”添加到此作为解决方案?

看起来你只是想要:

List<String> listDeliveries = deliveries.Select(x => x.summary()).ToList();
File.AppendAllLines("Database.txt", listDeliveries);
return listDeliveries;

(是的,你可以创建StreamWriter true作为第二个参数,但AppendAllLines更简单......)

答案 2 :(得分:1)

您可以使用ToList创建列表,File.AppendAllLines添加列表中的行:

List<string> listDeliveries = deliveries.Select(d => d.summary())
                                        .ToList();
File.AppendAllLines("Database.txt", listDeliveries);

答案 3 :(得分:0)

您可以使用

using (StreamWriter writer = new StreamWriter("Database.txt", true))

追加而不是覆盖

答案 4 :(得分:0)

使用重载的构造函数,允许您指定是否追加。默认值为false

StreamWriter writer = new StreamWriter("Database.txt", true)

答案 5 :(得分:0)

创建StreamWriter时,传入一个布尔值,告诉它将数据附加到文件而不是覆盖。

    using (StreamWriter writer = new StreamWriter("Database.txt", true))