C# как я могу сохранить свои входные данные в списке в файл .txt
мне нужно сохранить данные в списке, который я ввожу в консоль.У меня есть 3 функции ' Show(),Add(),Delete(). Когда я ввожу 1,он должен показать мне список моих данных,когда я ввожу 2,он должен попросить меня "ввести новые данные пользователя с запятой", например "Джон, 25", затем он должен быть сохранен в моем списке, то есть когда я ввожу 1,он должен показать мне мой список + новые добавленные данные, а когда я ввожу 3, он должен спросить меня "пожалуйста, введите индекс человека, которого вы хотите удалить", например, я введу 2, и он должен удалить второго индексного человека, а затем, когда я ввожу 1, он должен показать мне мой список без второго индексного человека.
Но в моем коде это не работает, после добавления или удаления он не показывает мне того человека, которого я добавил или удалил.
Пожалуйста,помогите мне, в чем моя ошибка???????
Что я уже пробовал:
class Controller { public List<Person> all; public void Show() { string path = "C:/Users/User/Desktop/mardik.txt"; FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Read); BinaryFormatter bf = new BinaryFormatter(); List<Person> all = bf.Deserialize(fs) as List<Person>; foreach (Person item in all) { Console.WriteLine(item.name + " " + item.age); } fs.Close(); } public void Add() { string path = "C:/Users/User/Desktop/mardik.txt"; FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite); BinaryFormatter bf = new BinaryFormatter(); List<Person> all = bf.Deserialize(fs) as List<Person>; Console.WriteLine("Enter new user's data with comma"); string text = Console.ReadLine(); string[] segments = text.Split(','); string a = segments[0]; int b; bool hajoxvec = int.TryParse(segments[1], out b); if (!hajoxvec) { Console.WriteLine("Please try again"); this.Add(); } else { all.Add(new Person(a, b)); } foreach (Person item in all) { Console.WriteLine(item.name + " " + item.age); } fs.Close(); } public void Delete() { string path = "C:/Users/User/Desktop/mardik.txt"; FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.ReadWrite); BinaryFormatter bf = new BinaryFormatter(); List<Person> all = bf.Deserialize(fs) as List<Person>; Console.WriteLine(); Console.WriteLine("Please type the index of Person, whom you want to delete"); int num = int.Parse(Console.ReadLine()); if (num < 0 || num > 4) { Console.WriteLine("Please try again"); this.Delete(); } else { all.RemoveAt(num); } foreach (Person item in all) { Console.WriteLine(item.name + " " + item.age); } fs.Close(); } }
[Serializable] class Person { public string name; public int age; public Person(string a, int b) { this.name = a; this.age = b; } }
static void Main(string[] args) { string path = "C:/Users/User/Desktop/mardik.txt"; //List<Person> mardik = new List<Person>(); //mardik.Add(new Person("Valod", 20)); //mardik.Add(new Person("Petros", 23)); //mardik.Add(new Person("Poghos", 25)); //mardik.Add(new Person("Hranush", 22)); //mardik.Add(new Person("Suren", 18)); //FileStream fs = new FileStream(path, FileMode.OpenOrCreate, FileAccess.Write); //BinaryFormatter bf = new BinaryFormatter(); //bf.Serialize(fs, mardik); //fs.Close(); Controller c = new Controller(); while (true) { Console.WriteLine(); Console.WriteLine("Incheq uzum anel:\n1.Show all People\n2.Add new person\n3.Delete any person"); int x = int.Parse(Console.ReadLine()); switch (x) { case 1: c.Show(); break; case 2: c.Add(); break; case 3: c.Delete(); break; } } }