C#比较文件流中文本文件的id

C# compare id from text file in filestream

我需要用有关工人的信息填写一个文本文件。然后我需要从文件中读取并搜索用户试图查找的 ID。例如我的文件包含 ids 1,2,3,如果我尝试找到 id 3 并且它匹配,那么这个工作人员的所有信息都写在控制台中。否则它会写一个文本 A worker cannot be found.

using System;
using System.IO;
class Program
{
    static void Main(string[] args)
    {
        string file = "C:\Temp\registery.txt";
        FileStream fOutStream = File.Open(file, FileMode.Append, FileAccess.Write);
        StreamWriter sWriter = new StreamWriter(fOutStream);
        int[] id = {     1, 2, 3     };
        string[] name = {     "John", "Carl", "Thomas"     };
        float[] salary = {     3500, 4800, 2100     };
        for (int i = 0; i < id.Length; i++)
        {
            sWriter.WriteLine(id[i] + " " + name[i] + " " + salary[i]);
        }
        sWriter.Flush();
        sWriter.Close();
        FileStream fInStream = File.OpenRead(file);
        StreamReader sReader = new StreamReader(fInStream);
        int id2;
        Console.WriteLine("Type worker's id");
        id2 = int.Parse(Console.ReadLine());
        bool a;
        a = sReader.ReadToEnd().Contains(id2);
        Console.WriteLine(a);
        sReader.Close();
    }
}

如果你想创建一个可搜索的文本文件,应该用逗号/TAB 等分隔符分隔 所以修改你的代码:

sWriter.WriteLine(id[i] + "," + name[i] + "," + salary[i]);

要通过 id/name/.. 搜索您的文本文件并使用 AND/OR,您可以使用此处描述的方法:

顺便说一句:重构您的代码以在单独的方法中创建文件,并在其他方法中进行搜索。

我自己找到了解决问题的方法,效果很好。这可能不是最好的解决方案。我删除了 bool 的东西,然后用这个替换了整个东西:

string line;
    while ((line = sReader.ReadLine()) != null)
    {
        if (line.Contains("id: " + id2))
        {
            Console.WriteLine(line);
            break;
        }
        else if ((line = sReader.ReadLine()) == null)
        {
            Console.WriteLine("Worker not found with id " + id2);

        }
     }

并且我将上面的 for 循环固定为如下所示:

sWriter.WriteLine("id: " + id[i] + " name: " + name[i] + " salary: " + salary[i]);