写入/读取文本文件 (C#)

Posted

技术标签:

【中文标题】写入/读取文本文件 (C#)【英文标题】:Write/Read Text Files (C#) 【发布时间】:2015-10-16 21:08:40 【问题描述】:

我不是 100% 确定如何在标题中解释这一点或如何搜索它,如果之前已经发布过,非常抱歉。我正在尝试做的是读取和写入文件,例如我会这样做:

WriteToFile(key + "=" + value);

在文本文件中会这样写:

AKey=AValue

我能够很容易地得到它,但我想知道我将如何获得代码来找到那个“键”并返回它的值。例如:

int integer = GetValue("AKey");

GetValue 方法会找到'key',“AKey”,如果它存在于文件中,则返回值。

【问题讨论】:

首先,读取所有行,然后为每一行使用 = 符号拆分字符串,这会为您提供两个字符串。将这些字符串存储在Dictionary<string, string> 中,然后您可以执行myDictionary["AKey"] 之类的操作。 由于您以自定义格式存储数据,因此您需要编写自定义解析器来读取该格式的数据。 @Sam 如果我有一个代码为Save("myNumber", 1);,那么它将是Save(string name, int number);,它将作为myNumber=1保存到一个文本文件中。然后我有另一个方法可以获取 myNumber 的值,类似于:Get("myNumber") (Get(string name)) 并且在这种情况下它会返回值 1。跨度> 【参考方案1】:

为了完整起见,我将扩展我的评论,以下是一些示例代码,说明您将如何完成此操作:

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&lt;string, string&gt; 保存从文件中读入的键/值对,因此当您想要刷新它时,可以使用文件名调用 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% 的一部分。它会“工作”(如不中断),但会产生意想不到的结果。如果键中也包含 = 符号,也会出现同样的问题。 所以我重新创建了您在此处所做的测试以进行测试。它似乎没有写入文件。你知道这可能是什么原因造成的吗? 没关系,我让它写入文件。感谢您的帮助!

以上是关于写入/读取文本文件 (C#)的主要内容,如果未能解决你的问题,请参考以下文章

c#二进制文件的写入和读取

文本文件的读取与写入

如何写入/读取“设置”文本文件

C# - 将数据写入流 + 使用另一个流读取数据

java--文本文件写入

从文本文件中读取和写入字符串