Слайд 2Типы хранилища
Коллекция Properites в классе Application
Настройки (Preferences) операционной системы
Файлы
Базы данных

Слайд 3Свойство Properites
Свойство Properties класса Application представляет словарь, где каждому ключу с типом

string сопоставляется некоторое значение
Слайд 4Добавление данных в словарь
App.Current.Properties.Add("name", "Tom");
// или так
App.Current.Properties["name"] = "Tom";
![Добавление данных в словарь App.Current.Properties.Add("name", "Tom"); // или так App.Current.Properties["name"] = "Tom";](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/852441/slide-3.jpg)
Слайд 5Получение значения
string name = App.Current.Properties["name"];
![Получение значения string name = App.Current.Properties["name"];](/_ipx/f_webp&q_80&fit_contain&s_1440x1080/imagesDir/jpg/852441/slide-4.jpg)
Слайд 6Удаление
App.Current.Properties.Remove("name");

Слайд 7Настройки приложения
В Xamarin Forms для работы с настройками мы можем использовать функциональность

из пакета Xamarin Essentials, который добавляется в проект Xamarin Forms по умолчанию
Слайд 8Настройки приложения
Все настройки доступны через свойство Preferences, который предоставляет для работы с

настройками следующие методы:
void Set(key, value): сохранение значения value по ключу key
string Get(key, defaultValue): получение значения по ключу key. Если же настроек с таким ключом нет, то возвращается значение по умолчанию - defaultValue
void Remove(key): удаляет настройку с ключом key
void Clear(): удаляет все настройки
bool ContainsKey(key): возвращает true, если имеется настройка с ключом key
Слайд 9Для сохранения применяется метод Set()
// сохраняем значение Tom по ключу name
Preferences.Set("name", "Tom");

Слайд 10Получение сохраненного значения по ключу
string name = Preferences.Get("name");
// если объекта нет используем

значение по умолчанию - "не известно"
string name2 = Preferences.Get("name", "не известно");
Слайд 11Удаление
Preferences.Remove("name");

Слайд 12Файлы
Для работы с файлами предназначена пара классов File и FileInfo. С их

помощью мы можем создавать, удалять, перемещать файлы, получать их свойства и многое другое
Слайд 13Полезные методы и свойства класса FileInfo
CopyTo(path): копирует файл в новое место по

указанному пути path
Create(): создает файл
Delete(): удаляет файл
MoveTo(destFileName): перемещает файл в новое место
Свойство Directory: получает родительский каталог в виде объекта DirectoryInfo
Свойство DirectoryName: получает полный путь к родительскому каталогу
Свойство Exists: указывает, существует ли файл
Свойство Length: получает размер файла
Свойство Extension: получает расширение файла
Свойство Name: получает имя файла
Свойство FullName: получает полное имя файла
Слайд 14Класс File реализует похожую функциональность с помощью статических методов
Copy(): копирует файл в

новое место
Create(): создает файл
Delete(): удаляет файл
Move: перемещает файл в новое место
Exists(file): определяет, существует ли файл
Слайд 15Запись в файл и StreamWriter
StreamWriter(string path): через параметр path передается путь к

файлу, который будет связан с потоком
StreamWriter(string path, bool append): параметр append указывает, надо ли добавлять в конец файла данные или же перезаписывать файл. Если равно true, то новые данные добавляются в конец файла. Если равно false, то файл перезаписываетсяя заново
StreamWriter(string path, bool append, System.Text.Encoding encoding): параметр encoding указывает на кодировку, которая будет применяться при записи
Слайд 16Свою функциональность StreamWriter реализует через следующие методы
int Close(): закрывает записываемый файл и

освобождает все ресурсы
void Flush(): записывает в файл оставшиеся в буфере данные и очищает буфер.
Task FlushAsync(): асинхронная версия метода Flush
void Write(string value): записывает в файл данные простейших типов, как int, double, char, string и т.д. Соответственно имеет ряд перегруженных версий для записи данных элементарных типов, например, Write(char value), Write(int value), Write(double value) и т.д.
Task WriteAsync(string value): асинхронная версия метода Write
void WriteLine(string value): также записывает данные, только после записи добавляет в файл символ окончания строки
Task WriteLineAsync(string value): асинхронная версия метода WriteLine
Слайд 17Чтение из файла и StreamReader
Класс StreamReader позволяет нам легко считывать весь текст

или отдельные строки из текстового файла.
Слайд 18Конструкторы класса StreamReader
StreamReader(string path): через параметр path передается путь к считываемому файлу
StreamReader(string

path, System.Text.Encoding encoding): параметр encoding задает кодировку для чтения файла