前言
在数据处理和存储中,CSV(Comma-Separated Values,逗号分隔值)文件和JSON(JavaScript Object Notation,JavaScript对象表示法)文件是两种非常常见的格式。CSV文件以其简洁、易读的特点在表格数据存储方面广受欢迎,而JSON文件则以其轻量级、易于人类阅读和编写、同时也易于机器解析和生成的特点,在数据交换和存储方面得到了广泛应用。
今天,我们将通过一个简单的C# WinForms项目,来复习一下CSV文件和JSON文件的读写操作。
项目结构
- Form1:主窗体,包含用于输入和显示数据的文本框,以及用于触发CSV和JSON文件读写操作的按钮。
- People类:用于存储人员信息的类,包括姓名、年龄、性别和家庭地址。
CSV文件读写
写入CSV文件
在写入CSV事件
方法中,我们首先将表头(姓名、年龄、性别、家庭地址)和数据(从文本框中获取的用户输入)拼接成字符串,然后使用File.WriteAllLines
方法将字符串数组写入CSV文件。注意,这里我们将表头和数据拼接成了两行,但实际上更好的做法是将表头和数据分别处理,以保证CSV文件的格式正确。
private void 写入CSV事件(object sender, EventArgs e)
{
string[] headers = { "姓名", "年龄", "性别", "家庭地址" };
string[] datas = { name, age, sex, address };
// 更好的做法是将表头和数据分别写入文件
// 但为了简化示例,这里我们将它们拼接成两行
string[] line1 = { string.Join(",", headers), string.Join(",", datas) };
File.WriteAllLines("学生信息.csv", line1);
MessageBox.Show("写入成功");
}
读取CSV文件
在读取CSV事件
方法中,我们使用File.ReadAllLines
方法读取CSV文件的所有行,并通过遍历每一行来查找与文本框中输入的姓名匹配的数据。找到匹配的数据后,我们将相应的信息填充到文本框中。
private void 读取CSV事件(object sender, EventArgs e)
{
string[] lines = File.ReadAllLines("学生信息.csv").ToArray();
for (int i = 1; i < lines.Length; i++) // 假设第一行是表头,从第二行开始读取数据
{
string data = lines[i];
string[] values = data.Split(',');
string name = values[0];
if (textBox1.Text.Equals(name))
{
textBox2.Text = values[1];
textBox3.Text = values[2];
textBox4.Text = values[3];
break;
}
}
}
JSON文件读写
写入JSON文件
在写入Json事件
方法中,我们首先创建一个People
对象,并将文本框中的信息赋值给该对象的属性。然后,我们将该对象添加到一个List<People>
集合中,并使用JsonMapper.ToJson
方法将集合转换为JSON字符串。最后,我们使用File.WriteAllText
方法将JSON字符串写入文件。
private void 写入Json事件(object sender, EventArgs e)
{
People people = new People();
people.Name = name;
people.Age = age;
people.Sex = sex;
people.Address = address;
List<People> peoples = new List<People>();
peoples.Add(people);
string data = JsonMapper.ToJson(peoples);
File.WriteAllText("data.json", data);
MessageBox.Show("写入成功");
}
读取JSON文件
在读入Json事件
方法中,我们使用File.ReadAllText
方法读取JSON文件的内容,并使用JsonMapper.ToObject<List<People>>
方法将JSON字符串转换为List<People>
集合。然后,我们遍历集合来查找与文本框中输入的姓名匹配的对象,并将相应的信息填充到文本框中。
private void 读入Json事件(object sender, EventArgs e)
{
string data = File.ReadAllText("data.json");
List<People> peoples = JsonMapper.ToObject<List<People>>(data);
foreach (People p in peoples)
{
if (textBox1.Text.Equals(p.Name))
{
textBox2.Text = p.Age;
textBox3.Text = p.Sex;
textBox4.Text = p.Address;
break;
}
}
}
文本框内容更新
在每个文本框的TextChanged
事件中,我们更新对应的变量(name
、age
、sex
、address
),以便在触发CSV或JSON文件的读写操作时,能够使用最新的用户输入。
private void textBox1_TextChanged(object sender, EventArgs e)
{
name = textBox1.Text;
}
private void textBox2_TextChanged(object sender, EventArgs e)
{
age = textBox2.Text;
}
private void textBox3_TextChanged(object sender, EventArgs e)
{
sex = textBox3.Text;
}
private void textBox4_TextChanged(object sender, EventArgs e)
{
address = textBox4.Text;
}
界面展示
总结
通过这个简单的C# WinForms项目,我们复习了CSV文件和JSON文件的读写操作。在实际开发中,我们可以根据需要选择合适的文件格式来存储和交换数据。同时,也需要注意数据的格式和正确性,以确保数据的准确性和可读性。希望这篇文章对你有所帮助!