写入/读取文本文件(C#)
我不是100%确定如何解释这个标题或如何搜索它,所以很抱歉,如果这已经发布之前。我正在试图做的是读取和写入文件,例如我会做:写入/读取文本文件(C#)
WriteToFile(key + "=" + value);
,并在文本文件,它会这样说:
AKEY =安勤
我能够很容易地得到,但我很奇怪,我究竟能够如何获得代码来找到'key'并返回它的值。例如:
int integer = GetValue("AKey");
和getValue会找到“钥匙”,“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;
}
的Dictionary<string, string>
认为是读取键/值对从文件中输入,所以当你想刷新它时,你可以用文件名称调用ReadInKeyFile
函数。然后,您可以使用GetValue
来获取特定密钥的值(如果找不到密钥,则可以使用String.Empty
)。
有一些明显的检查,我在上面的代码中缺少(文件不存在,行不包含=
等),但它会让你90%的方式。
编辑
下面是一些扩展,将新的钥匙和写出来的文件:
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;
}
的SaveToFile
方法可转换字典您使用的文件格式, AddValue
添加一个键和值(或者如果它已经存在,则更改现有的键)。
小心;如果'kvp.Value'包含'=',这将不起作用; –
@DourHighArch是的,当然,它将不得不逃脱,但再一次,这是我离开OP的10%的一部分。它会“起作用”(如同不会中断),但会产生意想不到的结果。如果密钥也包含=标记,它也有相同的问题。 –
所以我重新创建了你在这里完成的测试。它似乎并没有写入文件。你知道可能会造成这种情况吗? – superhb
首先,读取所有行,然后对每行使用=符号分割字符串,这会给你两个字符串。将这些字符串存储在一个'Dictionary'中,然后可以执行像'myDictionary [“AKey”]''的操作。 –
由于您以自定义格式存储数据,因此您需要编写自定义分析器来从该格式读取数据。 – David
@Sam说如果我有一个代码说'保存(“myNumber”,1);'所以这将是'保存(字符串名,int数);'这将保存到一个文本文件为** myNumber = 1 **。然后我有另一个获取_myNumber_的值的方法,它会是这样的:'Get(“myNumber”)'('Get(string name)')并且在这种情况下返回值1。 – superhb