写/读文本文件(C#)
我不是100%确定如何解释这个标题或如何搜索它,所以很抱歉,如果这已经张贴过。我正在尝试读写一个文件,例如:写/读文本文件(C#),c#,save,read-write,C#,Save,Read Write,我不是100%确定如何解释这个标题或如何搜索它,所以很抱歉,如果这已经张贴过。我正在尝试读写一个文件,例如: WriteToFile(key + "=" + value); 在文本文件中,它会说: 阿凯=阿瓦鲁 我可以很容易地得到它,但我想知道如何才能让代码找到“键”并返回它的值。例如: int integer = GetValue("AKey"); GetValue方法会找到“key”和“AKey”,如果它存在于文件中,则返回值。为了完整起见,我将扩展我的注释,下面是一些示例代码,说明如何
WriteToFile(key + "=" + value);
在文本文件中,它会说:
阿凯=阿瓦鲁
我可以很容易地得到它,但我想知道如何才能让代码找到“键”并返回它的值。例如:
int integer = GetValue("AKey");
GetValue方法会找到“key”和“AKey”,如果它存在于文件中,则返回值。为了完整起见,我将扩展我的注释,下面是一些示例代码,说明如何实现这一点:
Dictionary<string, string> _keys = new Dictionary<string, string>();
private void ReadInKeyFile(string keyFileName)
{
_keys.Clear();
string[] lines = System.IO.File.ReadAllLines(keyFileName);
foreach (string line in lines)
{
string[] keyval = line.Split('=');
_keys.Add(keyval[0], keyval[1]);
}
}
private string GetValue(string key)
{
string retVal = string.Empty;
_keys.TryGetValue(key, out retVal);
return retVal;
}
SaveToFile
方法将字典转换为您使用的文件格式,AddValue
添加一个键和值(或更改现有键,如果它已经存在)。首先,读取所有行,然后对每行使用=号拆分字符串,这将为您提供两个字符串。将这些字符串存储在字典中
,然后您可以执行类似于myDictionary[“AKey”]
的操作。因为您以自定义格式存储数据,所以需要编写自定义解析器来读取该格式的数据。@Sam说如果我有一个代码说Save(“myNumber”,1)代码>所以它将是Save(字符串名,整数)代码>,并以myNumber=1的形式保存到文本文件中。然后我有另一个方法来获取myNumber的值,类似这样:Get(“myNumber”)
(Get(string name)
),它会返回值,所以在这种情况下,1.小心;如果kvp.Value
包含=
,则此操作无效@DourHighArch是的,当然,它必须被逃脱,但是,这也是我留给OP的10%的一部分。它会“起作用”(就像在“不休息”中一样),但会产生意想不到的结果。如果密钥也包含=符号,则会出现同样的问题。因此,我重新创建了您在这里所做的工作来测试它。似乎它没有写入文件。你知道这可能是什么原因吗?没关系,我把它写到文件里了。谢谢你的帮助!
private void SaveKeysToFile(string keyFileName)
{
StringBuilder sb = new StringBuilder();
_keys.ToList().ForEach(kvp =>
sb.AppendLine(string.Format("{0}={1}", kvp.Key, kvp.Value)));
System.IO.File.WriteAllText(keyFileName, sb.ToString());
}
private void AddValue(string key, string value)
{
_keys[key] = value;
}