Десериализация файла, когда в него пишем несколько раз
От: Psihadelic  
Дата: 06.06.11 19:24
Оценка: :))
Добрый день уважаемые программисты!

Если данный вопрос уже обсуждался, прошу ткнуть меня носом, спасибо)

Вопрос следующий:
Я создаю 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 раз, то в результате получаю только те данные из файла, которые были записаны последний раз, т.е. двадцать пятый.

Нужно считать весь файл, очень желательно в одну коллекцию. Как это сделать?
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.