我需要开发一个电话簿。
我将联系人数据写入文本文件,然后使用控制台。我有什么选项来搜索和删除该文本文件中的联系人?
这就是我插入联系人的方式:
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();
}
}
答案 0 :(得分:0)
每一行对应一个联系人,对吗?删除联系人的标准是什么?如果您要查找名称和姓氏,可以执行此操作。
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的基础知识,或者了解一点挑战(并且有时间),那么这可能是一个更好的方法。