【发布时间】:2021-10-22 19:05:00
【问题描述】:
我正在用 C# 编写一个简单的程序来添加、删除、更改和查看键值对。我想将此代码中使用的字典保存在文件中。我想在启动程序时从文件中加载这个字典,并在退出时保存编辑的字典。
我已经编写了从文本文件写入字典的代码,以及在退出时将字典写入文本文件的代码。每当我使用空文本文件运行程序时,它都会正常执行并将任何新条目添加到字典中。退出并将这些新的字典键值保存到文本文件后,当我再次尝试加载程序时,似乎密钥对已经在字典中并且不会运行程序。
我的字典里面也没有任何内容。
将新字典保存到文本文件的代码是
private void btnExit_Click(object sender, EventArgs e)
{
File.WriteAllLines("myfile.txt",
names.Select(x => "[" + x.Key + "," + x.Value + "]").ToArray());
this.Close();
}
这将使文本文件中的输出以这种格式输出
[jackP@gmail.com, 杰克] [ashleyD@gmail.com,阿什利] [samF@gmail.com, 山姆]
将更新后的文本文件输出到字典的代码是
private void Form1_Load(object sender, EventArgs e)
{
StreamReader sr = new StreamReader("myfile.txt");
string line;
while ((line = sr.ReadLine()) != null)
{
string[] arr = line.Split(',');
int i = 0;
while (i < arr.Length)
{
names.Add(arr[i], arr[i + 1]);
i += 2;
}
}
}
【问题讨论】:
-
我在哪里遗漏了问题?
-
您的问题、问题或错误是什么?
-
@Milad 标签必须告诉您问题是什么关于,而不是问题的内容。
winforms标签不合适,因为问题与 winforms 无关,所以我删除了该标签。 -
您确定
names.Select(x => "[" + x.Key + "," + x.Value + "]")创建的是纯CSV 文件吗?看起来它会创建一个 csv 文件,每一行都用括号括起来 -
另外,文件中的每一行似乎只有一个名称。你可以只做
names[arr[0]] = arr[1]而不是在那里有一个while循环。
标签: c# file dictionary