Загрузка...

Как сделать сохранение аватоарок после перезапуска программы?

Тема в разделе C# создана пользователем zellun 16 дек 2020. 135 просмотров

  1. zellun
    zellun Автор темы 16 дек 2020 мульт? 110 2 янв 2018
    Пишу свой мессенджер и нужно, чтобв после перезапуска пограммы, оставалась аватарка, которую выбрал пользователь. Без использования бд.
    Как грамотнее реализовать?
     
  2. Ignes
    Ignes 16 дек 2020 xD 284 1 ноя 2016
    Без БД никак
     
    1. zellun Автор темы
      Ignes, а ты, я вижу, знаток:warpath:
  3. itstranger
    itstranger 16 дек 2020 13 19 апр 2020
    Очень просто. Нужно сериализовать классы объектов, которые нужно сохранить, после чего сохранить сериализацию в файл. Собственно при загрузке десериализовывать с него данные. Фишка в том, что в сериализуемом файле можно хранить изображения, если в программе они имеют тип 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; }
    }
    }
    Сериализация и сохранение экземпляров класса в файл:
    Код
            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();
    }
    }
    }
    Взял код из одного старого проекта. Но суть думаю понятно. Кстати класс Question тут как раз хранит в себе свойство с типом Bitmap.
    Извиняюсь за качество кода, но проект очень старый.) Так что не бейте. Однако суть думаю понятна.) Если нет то могу объяснить подробнее.
     
    16 дек 2020 Изменено
    1. Посмотреть предыдущие комментарии (1)
    2. itstranger
      zellun, Дополнил коммени, не знаю успел ли до того, как ты прочитал.) Там функции как помещать в файл и как забирать из него данные.
    3. zellun Автор темы
      itstranger, Благодараю, завтра буду пытаться что то склепать)
    4. itstranger
      zellun, Ну, будут вопросы - задавай.)
Загрузка...
Top