将List <t>中的数据附加到文本文件</t>

时间:2014-07-21 22:49:35

标签: c# file-io collections

我正在做一个小型家庭项目,以了解有关馆藏和FileIO的更多信息。

我制作了一个小型赛车应用程序,用户输入所有字符串的赛车详细信息,并将这些详细信息插入到列表列表中,然后一旦用户点击“保存”字样。按钮将列表的内容提取到文本文件中。我已成功写入文本文件但是我现在想要更改这个以便我可以将数据附加到文本文件而不是每次将数据写入文本文件时覆盖以前的数据,我是我在使用AppendAllText()时遇到了麻烦。

以下是我的People类如何处理列表中的数据输入:

class People
    {
        public string Name { get; set; }
        public string Car { get; set; }
        public string Place { get; set; }
        public List<string> myList = new List<string>();
        public void ShowList()
        {           
                for (int i = 0; i < myList.Count; i++)
                {
                    Console.WriteLine("" + myList[i] + "\n|");
                }
        }
        public void AddToList()
        {
            myList.Add("Name: " + Name + " Car: " + Car + " Place: " + Place);
        }
    }

这是我的Form1类,其main方法处理事件并将值发送到People类的列表中:

public partial class Form1 : Form
    {
        People person = new People();
        string path = @"C:\Users\Keil\Documents\Visual Studio 2013\Projects\CarRacingArrList\racers.txt";
        public Form1()
        {
            InitializeComponent();          
        }
        private void button1_Click(object sender, EventArgs e)
        {
            person.ShowList();          
        }
        private void button2_Click(object sender, EventArgs e)
        {        
            person.Name = textBox1.Text;
            person.Car = textBox2.Text;
            person.Place = textBox3.Text;
            person.AddToList();
            textBox1.Text = "";
            textBox2.Text = "";
            textBox3.Text = "";
        }
        private void button3_Click(object sender, EventArgs e)
        {
            File.AppendAllText(path, person.myList.OfType<string>().ToString());                    
        }
    }

如您所见,我正在使用AppendAllText()方法,其中我传递文本文件的路径和列表的内容。当数据写入文本文件时,它会将其附加到结尾:System.Linq.Enumerable + d__aa`1 [System.String] 而不是存储在myList中的实际数据。

看起来好像是返回对象类型而不是实际数据

我的代码中是否存在我遗漏的内容?

2 个答案:

答案 0 :(得分:3)

请勿在{{1​​}}后致电ToString。使用OfType连接所有行。

string.Join

或者只使用File.AppendAllText(path, string.Join(Environment.NewLine, person.myList));

File.AppendAllLines

我还删除了File.AppendAllLines(path, person.myList); 来电,因为它是多余的,您已经有OfType

答案 1 :(得分:0)

您是否尝试过:File.AppendAllLines();?

File.AppendAllLines(path,person.myList.OfType());