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]);
我需要用有关工人的信息填写一个文本文件。然后我需要从文件中读取并搜索用户试图查找的 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]);