【问题标题】:What is the best way to check if a file contains a key before adding a new line?在添加新行之前检查文件是否包含密钥的最佳方法是什么?
【发布时间】:2020-09-15 22:55:55
【问题描述】:

我有一个包含以下列的 CSV 文件 -

键、值

第一行

第二行

第三行

如果使用 C# 的文件中尚未存在密钥,我想向此文件添加一个新的键值对吗?最好的方法是什么?我必须逐行遍历并检查密钥还是有其他更好的方法?

我没有使用 CSVHelper 包或任何其他 CSV 编写器。

【问题讨论】:

  • "我必须逐行遍历并检查密钥吗?"是的。
  • 我的文件最终会变大。这不是一个昂贵的过程吗?
  • 这个文件有多大?
  • @Steve 现在,行数很少。而且它可能不会超过几百行。
  • @itsme86 不可避免,但只有一次,不是每次查找

标签: c# csv streamreader streamwriter


【解决方案1】:

你可以这样做:

string path = @"PathToFile.csv";
string Content = string.Empty;

using (StreamReader reader = new StreamReader(path))
{
    Content = reader.ReadToEnd();
    reader.Close();
}

if (!Content.Contains("YourKey"))
{
    using (StreamWriter sw = new StreamWriter(path))
    {
        sw.WriteLine(Content + "\nYourkey,YourValue");
        sw.Close();
    }
}

读取文件并将所有文本写入字符串变量,检查变量是否存在密钥,如果不存在则将内容连同新密钥一起写回文件。随着文件的增长,搜索整个文件所需的时间会越来越长,但它会很好地搜索几千行。

【讨论】:

  • 感谢您的解决方案。我认为这是行不通的,因为 Key present 的返回值将是 true,即使它作为字符串出现在其他列值中也是如此。我只需要验证 Key 列。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2010-09-18
  • 1970-01-01
  • 2020-10-05
相关资源
最近更新 更多