Загрузка...

How to save avatars after restarting the program?

Thread in C# created by zellun Dec 16, 2020. 147 views

  1. zellun
    zellun Topic starter Dec 16, 2020 мульт? 110 Jan 2, 2018
    Пишу свой мессенджер и нужно, чтобв после перезапуска пограммы, оставалась аватарка, которую выбрал пользователь. Без использования бд.
    Как грамотнее реализовать?
     
  2. Ignes
    Ignes Dec 16, 2020 xD 283 Nov 1, 2016
    Без БД никак
     
    1. zellun Topic starter
      Ignes, а ты, я вижу, знаток:warpath:
  3. itstranger
    itstranger Dec 16, 2020 12 Apr 19, 2020
    Очень просто. Нужно сериализовать классы объектов, которые нужно сохранить, после чего сохранить сериализацию в файл. Собственно при загрузке десериализовывать с него данные. Фишка в том, что в сериализуемом файле можно хранить изображения, если в программе они имеют тип Bitmap.
    The post was merged to previous Dec 16, 2020
    Вот пример кода, как можно сериализовывать данные в файл.
    Сам сериализуемый класс в файл:
    Code
    using System;
    using System.Collections.Generic;

    namespace Lol {
    [Serializable]
    public class Serialize {
    public List<Categories> cat { get; set;}
    public List<Question> que { get; set; }
    }
    }
    Сериализация и сохранение экземпляров класса в файл:
    Code
            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();
    }
    }
    И чтение данных из файла:
    Code
            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.
    Извиняюсь за качество кода, но проект очень старый.) Так что не бейте. Однако суть думаю понятна.) Если нет то могу объяснить подробнее.
     
    1. View previous comments (1)
    2. itstranger
      zellun, Дополнил коммени, не знаю успел ли до того, как ты прочитал.) Там функции как помещать в файл и как забирать из него данные.
    3. zellun Topic starter
      itstranger, Благодараю, завтра буду пытаться что то склепать)
    4. itstranger
      zellun, Ну, будут вопросы - задавай.)
Top
Loading...