0

我正在将一个列表写入文件,该列表从我输入的文本中从表单应用程序获取数据。这有效,但每次我启动表单时它都会覆盖文件,而不是保存它并添加新数据。我如何添加“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;

    }
4

6 回答 6

2
var listDeliveries = deliveries.Select(d=>d.summary()).ToList();
File.AppendAllLines("Database.txt", listDeliveries);
return listDeliveries;
于 2012-11-30T16:25:38.530 回答
1

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

好吧,看起来你只是想要:

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

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

于 2012-11-30T16:25:09.940 回答
1

您可以使用ToList来创建列表并File.AppendAllLines从列表中追加行:

List<string> listDeliveries = deliveries.Select(d => d.summary())
                                        .ToList();
File.AppendAllLines("Database.txt", listDeliveries);
于 2012-11-30T16:26:24.000 回答
0

您可以使用

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

追加而不是覆盖

于 2012-11-30T16:25:01.713 回答
0

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

StreamWriter writer = new StreamWriter("Database.txt", true)
于 2012-11-30T16:25:19.860 回答
0

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

    using (StreamWriter writer = new StreamWriter("Database.txt", true))
于 2012-11-30T16:26:19.083 回答