我正在做一个家庭项目,以了解有关集合和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类,具有用于处理事件并将值发送到People类中的列表的main方法:
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中的实际数据。
看起来正在返回对象类型而不是实际数据
我的代码中有什么我缺少的东西吗?
不要叫ToString
后OfType
。使用string.Join
来连接所有线路。
File.AppendAllText(path, string.Join(Environment.NewLine, person.myList));
或只是使用 File.AppendAllLines
File.AppendAllLines(path, person.myList);
我也删除了OfType
通话,因为它是多余的,您已经有一个List<string>
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句