Добрый день уважаемые программисты!
Если данный вопрос уже обсуждался, прошу ткнуть меня носом, спасибо)
Вопрос следующий:
Я создаю List<>, добавляю в него объекты и пишу этот лист в файл.
Для чтения файла пишу такой код:
public List<User> ReadFile()
{
BinaryFormatter bf = new BinaryFormatter();
FileStream fs = new FileStream("C:\\user.txt", FileMode.Open, FileAccess.Read, FileShare.Read);
List<User> AllUsers = new List<User>();
fs.Position = 0;
while (fs.Position < fs.Length)
{
AllUsers = ((List<User>)bf.Deserialize(fs));
}
fs.Close();
return AllUsers;
}
И всё работает.
Но если я закрываю программу и снова пишу в этот файл данные, то при чтении возникает такая проблема:
В List<> считываются элементы, которые были добавлены при первом запуске программы, но так как фал не кончен (ведь добавляли ещё данные), начинается считывания того, что было добавлено позже, а предыдущие данные, которые были считаны теряются.
Если в файл я писал скажем 25 раз, то в результате получаю только те данные из файла, которые были записаны последний раз, т.е. двадцать пятый.
Нужно считать весь файл, очень желательно в одну коллекцию. Как это сделать?