Пишу свой мессенджер и нужно, чтобв после перезапуска пограммы, оставалась аватарка, которую выбрал пользователь. Без использования бд. Как грамотнее реализовать?
Очень просто. Нужно сериализовать классы объектов, которые нужно сохранить, после чего сохранить сериализацию в файл. Собственно при загрузке десериализовывать с него данные. Фишка в том, что в сериализуемом файле можно хранить изображения, если в программе они имеют тип Bitmap. --- Сообщение объединено с предыдущим 16 дек 2020 Вот пример кода, как можно сериализовывать данные в файл. Сам сериализуемый класс в файл: using System; using System.Collections.Generic; namespace Lol { [Serializable] public class Serialize { public List<Categories> cat { get; set;} public List<Question> que { get; set; } } } Код using System; using System.Collections.Generic; namespace Lol { [Serializable] public class Serialize { public List<Categories> cat { get; set;} public List<Question> que { get; set; } } } Сериализация и сохранение экземпляров класса в файл: public void save_to_file(string path) { Serialize s = new Serialize(); s.cat = cat; s.que = que; BinaryFormatter binFormat = new BinaryFormatter(); using (Stream fStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None)) { binFormat.Serialize(fStream, s); fStream.Close(); } } Код public void save_to_file(string path) { Serialize s = new Serialize(); s.cat = cat; s.que = que; BinaryFormatter binFormat = new BinaryFormatter(); using (Stream fStream = new FileStream(path, FileMode.Create, FileAccess.Write, FileShare.None)) { binFormat.Serialize(fStream, s); fStream.Close(); } } И чтение данных из файла: public void load_is_file(string path) { if (File.Exists(path)) { System.IO.FileInfo file = new System.IO.FileInfo(path); long size = file.Length; if (size > 0) { FileStream fs = new FileStream(path, FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); Serialize s = new Serialize(); s = (Serialize)formatter.Deserialize(fs); cat = s.cat; que = s.que; fs.Close(); } } } Код public void load_is_file(string path) { if (File.Exists(path)) { System.IO.FileInfo file = new System.IO.FileInfo(path); long size = file.Length; if (size > 0) { FileStream fs = new FileStream(path, FileMode.Open); BinaryFormatter formatter = new BinaryFormatter(); Serialize s = new Serialize(); s = (Serialize)formatter.Deserialize(fs); cat = s.cat; que = s.que; fs.Close(); } } } Взял код из одного старого проекта. Но суть думаю понятно. Кстати класс Question тут как раз хранит в себе свойство с типом Bitmap. Извиняюсь за качество кода, но проект очень старый.) Так что не бейте. Однако суть думаю понятна.) Если нет то могу объяснить подробнее.
zellun, Дополнил коммени, не знаю успел ли до того, как ты прочитал.) Там функции как помещать в файл и как забирать из него данные.