-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathJSONSave.cs
110 lines (95 loc) · 2.73 KB
/
JSONSave.cs
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
using System;
using System.Collections.Generic;
using System.IO;
using ActivityWeatherSchedulerLibraryNETStandard.Models;
using Newtonsoft.Json;
namespace ActivityWeatherSchedulerLibraryNETStandard
{
public enum JSONFileType
{
Activities,
Weather
}
public class JSONSave
{
public static void SaveActivities(string filePath, IEnumerable<Activity> activities)
{
var jsonSerializer = new JsonSerializer();
using (var streamWriter = File.CreateText(filePath))
{
jsonSerializer.Serialize(streamWriter, activities);
}
}
public static IList<Activity> LoadActivities(string filePath)
{
if (File.Exists(filePath))
{
var jsonSerializer = new JsonSerializer();
using (var streamReader = File.OpenText(filePath))
{
var jsonReader = new JsonTextReader(streamReader);
return jsonSerializer.Deserialize<IList<Activity>>(jsonReader);
}
}
else
{
return null;
}
}
public static void SaveWeather(string filePath, IEnumerable<WeatherForecast> weatherForecasts)
{
var jsonSerializer = new JsonSerializer();
using (var streamWriter = File.CreateText(filePath))
{
jsonSerializer.Serialize(streamWriter, weatherForecasts);
}
}
public static IList<WeatherForecast> LoadWeather(string filePath)
{
if (File.Exists(filePath))
{
var jsonSerializer = new JsonSerializer();
using (var streamReader = File.OpenText(filePath))
{
var jsonReader = new JsonTextReader(streamReader);
return jsonSerializer.Deserialize<IList<WeatherForecast>>(jsonReader);
}
}
else
{
return null;
}
}
public static string JSONAppDataFilePath(JSONFileType fileType)
{
var appDataPath = Environment.GetFolderPath(Environment.SpecialFolder.ApplicationData);
var directoryPath = appDataPath + "\\ActivityWeatherScheduler";
Directory.CreateDirectory(directoryPath);
switch (fileType)
{
case JSONFileType.Activities:
return directoryPath + "\\Activities.json";
case JSONFileType.Weather:
return directoryPath + "\\Weather.json";
default:
return string.Empty;
}
}
public static void SaveActivitiesToAppData(IEnumerable<Activity> activities)
{
SaveActivities(JSONAppDataFilePath(JSONFileType.Activities), activities);
}
public static IList<Activity> LoadActivitiesFromAppData()
{
return LoadActivities(JSONAppDataFilePath(JSONFileType.Activities));
}
public static void SaveWeatherToAppData(IEnumerable<WeatherForecast> weatherForecasts)
{
SaveWeather(JSONAppDataFilePath(JSONFileType.Weather), weatherForecasts);
}
public static IList<WeatherForecast> LoadWeatherFromAppData(IEnumerable<WeatherForecast> weatherForecasts)
{
return LoadWeather(JSONAppDataFilePath(JSONFileType.Weather));
}
}
}