首页 > 解决方案 > 检查文本文件中是否存在文本

问题描述

我试图弄清楚我从当前 URL 获得的文本 URL 是否存在于“linkx.txt”中,如果确实存在则显示一条消息,如果不存在则写入文本文件。但是,当我运行此代码时,程序会在识别文本存在之前两次写入文本文件。

[工作代码]

  protected override bool ProcessCmdKey(ref Message msg, Keys keyData)
{
    string linkx = @"Desktop\linkx.txt";
    string url = "";
    if (keyData == Keys.F1) { Application.Exit(); return true; }
    else if (keyData == Keys.F2) { url = webBrowser1.Url.AbsoluteUri; return true; }

    using (StreamReader sr = File.OpenText(linkx))
    {
        string texxt = url;
        string[] lines = File.ReadAllLines(linkx);
        bool matched = false;
        for (int x = 0; x < lines.Length; x++)
        {
            if (texxt == lines[x])
            {
                sr.Close();
                MessageBox.Show("there is a match");
                matched = true;
            }
        }
        if (!matched)
        {
            sr.Close();
            using (StreamWriter wriite = File.AppendText(linkx))
            {
                wriite.WriteLine(url);
                MessageBox.Show("url copied!");
                return true;    // indicate that you handled this keystroke
            }
        }
    }
    // Call the base class
    return base.ProcessCmdKey(ref msg, keyData);
}

标签: c#if-statementtextstreamwriter

解决方案


它比你所拥有的要简单得多。如果您刚刚有一个字符串数组,则可以使用Array.Contains

var lines = File.ReadAllLines("links.txt");

if (!lines.Contains("google.com")) {
  File.AppendAllText("links.txt", "google.com");
}

推荐阅读