我正在做一个小家庭项目,以了解有关集合和 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 中的实际数据。
看起来返回的是对象类型而不是实际数据
我的代码中是否缺少某些内容?
请勿在
ToString
之后致电OfType
。使用 string.Join
连接所有行。
File.AppendAllText(path, string.Join(Environment.NewLine, person.myList));
或者直接使用
File.AppendAllLines
File.AppendAllLines(path, person.myList);
我还删除了
OfType
调用,因为它是多余的,你已经有一个 List<string>
你尝试过吗:
File.AppendAllLines();
?
File.AppendAllLines(path, person.myList.OfType<string>());