【问题标题】:How do I check if one of the lines already exist in the text file?如何检查文本文件中是否已存在其中一行?
【发布时间】:2015-06-02 18:03:53
【问题描述】:
string filename = "";
        private void openToolStripMenuItem1_Click(object sender, EventArgs e)
        {
            OpenFileDialog theDialog = new OpenFileDialog();
            theDialog.Title = "Open Text File";
            theDialog.Filter = "TXT files|*.txt";
            theDialog.InitialDirectory = @"C:\";
            if (theDialog.ShowDialog() == DialogResult.OK)
            {
                lines = File.ReadAllLines(RecentFiles);
                filename = theDialog.FileName;
                for (int i = 0; i < lines.Length; i++)
                {
                    recentfiles = new StreamWriter(RecentFiles, true);
                    recentfiles.WriteLine(theDialog.FileName);
                    recentfiles.Close();
                    items = File
                        .ReadLines(RecentFiles)
                        .Select(line => new ToolStripMenuItem()
                        {
                            Text = line
                        })
                        .ToArray();
                recentFilesToolStripMenuItem.DropDownItems.AddRange(items);
                }

                TextFileContentToRichtextbox(filename);
            }
        }

我不确定在线条上执行 for 循环是否正确。 但是我想做的是当我打开一个新的文本文件来检查它是否已经存在于RecentFiles(RecentFiles.txt) 中,如果它确实存在就不要再写了。

循环遍历行,如果遍历所有行并且变量文件名不存在,则将其写入文本文件,并更新项目。

【问题讨论】:

  • string.compare 不会完成你的任务吗?
  • 您可以使用索引来标记任何行并加快搜索速度!例如,当编写任何行时,获取行哈希码,而不是行索引!其他方式可能是使用数据库而不是文件!

标签: c# .net winforms


【解决方案1】:

Linq 非常适合:

// if there are not any lines that equal the filename
if (!lines.Any(line => line.Equals(filename)))
{
    // then write it into recent files text file
}

【讨论】:

    【解决方案2】:

    //// 下面的代码只有在一行有 1 个文件名的扩展名或任何文本时才有效。

    if (lines.Contains(filename, StringComparer.OrdinalIgnoreCase))
                        { 
        //// lines contains
                        }
                    else
                    {
        ////lines doesnot contain file name
                    }
    

    验证它是否完全满足您的要求。

    【讨论】:

      猜你喜欢
      • 2021-03-18
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 2014-08-11
      • 2021-09-05
      • 1970-01-01
      • 2022-11-30
      • 1970-01-01
      相关资源
      最近更新 更多