Notes

Форк
0
/
NotesSerializer.cs 
56 строк · 1.9 Кб
1
using System;
2
using System.Collections.Generic;
3
using System.Collections.ObjectModel;
4
using System.IO;
5
using System.Linq;
6
using System.Text;
7
using System.Threading.Tasks;
8
using Newtonsoft.Json;
9
using ViewModel;
10

11
namespace Model.Services
12
{
13
    public static class NotesSerializer
14
    {
15
        /// <summary>
16
        /// Путь к – «Мои документы\Notes\notes.json».
17
        /// </summary>
18
        public static string MyDocumentsPath { get; set; } =
19
            Environment.GetFolderPath(Environment.SpecialFolder.MyDocuments)
20
            + @"\Notes\notes.json";
21

22
        public static void Serialize(List<NoteDTO>? notes)
23
        {
24
            if (!Directory.Exists(Path.GetDirectoryName(MyDocumentsPath)))
25
                Directory.CreateDirectory(Path.GetDirectoryName(MyDocumentsPath));
26
            using (StreamWriter writer = new StreamWriter(MyDocumentsPath))
27
            {
28
                writer.Write(JsonConvert.SerializeObject(notes));
29
            }
30
        }
31

32
        public static ObservableCollection<NoteViewModel>? Deserialize()
33
        {
34
            if (!Directory.Exists(Path.GetDirectoryName(MyDocumentsPath)))
35
                Directory.CreateDirectory(Path.GetDirectoryName(MyDocumentsPath));
36
            ObservableCollection<NoteViewModel>? contacts = 
37
                new ObservableCollection<NoteViewModel>();
38
            try
39
            {
40
                using (StreamReader reader = new StreamReader(MyDocumentsPath))
41
                {
42
                    contacts = JsonConvert.
43
                        DeserializeObject<ObservableCollection<NoteViewModel>>(reader.ReadToEnd());
44
                }
45

46
                if (contacts == null) contacts = new ObservableCollection<NoteViewModel>();
47
            }
48
            catch (FileNotFoundException e)
49
            {
50
                return contacts;
51
            }
52

53
            return contacts;
54
        }
55
    }
56
}
57

Использование cookies

Мы используем файлы cookie в соответствии с Политикой конфиденциальности и Политикой использования cookies.

Нажимая кнопку «Принимаю», Вы даете АО «СберТех» согласие на обработку Ваших персональных данных в целях совершенствования нашего веб-сайта и Сервиса GitVerse, а также повышения удобства их использования.

Запретить использование cookies Вы можете самостоятельно в настройках Вашего браузера.