在文本文件中搜索和删除

本文关键字:删除 搜索 文本 文件 | 更新日期: 2023-09-27 18:31:21

我需要开发一个电话簿。

我将联系人数据写入文本文件,并使用控制台。 我可以使用哪些选项来搜索和删除该文本文件中的联系人?

这就是我插入联系人的方式:

public class Writer
{
    public void  writer (string name,string lastname,string number)
    {
        StreamWriter Wrt = new StreamWriter("D:''Sample.txt",true);
        Wrt.Write(name);
        Wrt.Write(lastname);
        Wrt.Write(number);
        Wrt.Write("#");
        Wrt.Write("");
        Wrt.Close();
    }
}

在文本文件中搜索和删除

每行对应一个联系人,对吧?删除联系人的条件是什么?如果您正在寻找名字和姓氏,则可以这样做。

string line = null; 
string Criteria = name + " " lastname;
using (StreamReader reader = new StreamReader("C:''input"))
{ 
  using (StreamWriter writer = new StreamWriter("C:''output"))
  { 
    while ((line = reader.ReadLine()) != null)
    { 
      if (line.Contains(Criteria)) 
        continue; 
      writer.WriteLine(line); 
    } 
  } 
} 

这将读取您的文件并将您要保留的所有联系人写入另一个文件。

但是,如果您想保留相同的文件(或者您的联系人信息在多行上)。您可以读取整个文件并将其保存在内存中,删除不需要的文件,然后再次写入文件。

//Method with a class containing the info because informations are on several lines
Contact[] contacts = MethodToRead("filename.txt"); 
Contact[] filteredContacts = methodFilterContacts(contacts ); 
foreach(Contact c in filteredContacts)
{
     //Call your write method mentionned
     Writer.writer(c.name, c.lastname, c.number);
}
//Method if contact on only one line
string[] contactLines = File.ReadAllLines("filename.txt"); 
string[] filteredContactLines = methodFilterContacts(contactLines ); 
//This will write everything as is
File.WriteAllLines("filename.txt", filteredContactLines ); 

那是如果你想保留你的文本文件。如前所述,您可以使用 xml 来写入和读取更易于维护的文件。如果您了解 xml 的基础知识,或者准备接受一点挑战(并且有时间),这可能是更好的方法。