写/读文本文件(C#)

写/读文本文件(C#),c#,save,read-write,C#,Save,Read Write,我不是100%确定如何解释这个标题或如何搜索它,所以很抱歉,如果这已经张贴过。我正在尝试读写一个文件,例如: WriteToFile(key + "=" + value); 在文本文件中,它会说: 阿凯=阿瓦鲁 我可以很容易地得到它,但我想知道如何才能让代码找到“键”并返回它的值。例如: int integer = GetValue("AKey"); GetValue方法会找到“key”和“AKey”,如果它存在于文件中,则返回值。为了完整起见,我将扩展我的注释,下面是一些示例代码,说明如何

我不是100%确定如何解释这个标题或如何搜索它,所以很抱歉,如果这已经张贴过。我正在尝试读写一个文件,例如:

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;
}