Я использую файл json для хранения в памяти. JSON - это формат обмена сообщениями с легким весом и широко используется. Вы должны сделать некоторые небольшие изменения в коде, если хотите какой-то другой формат файла.
Ваша коллекция будет сериализована в память во время сохранения и должна быть десериализована при чтении ее из памяти.
Добавить свою собственную общую реализацию коллекции. Чтобы создать вашу ситуацию, я использую простой ObservableCollection<int>
. И не забудьте инициализировать коллекцию некоторыми значимыми значениями, здесь я использую инициализацию конструктора по умолчанию.
using System.Collections.ObjectModel;
using System.Runtime.Serialization.Json;
using Windows.Storage;
//Add your own generic implementation of the collection
//and make changes accordingly
private ObservableCollection<int> temp;
private string file = "temp.json";
private async void saveToFile()
{
//add your items to the collection
temp = new ObservableCollection<int>();
var jsonSerializer = new DataContractJsonSerializer(typeof(ObservableCollection<int>));
using (var stream = await ApplicationData.Current.LocalFolder.OpenStreamForWriteAsync(file, CreationCollisionOption.ReplaceExisting))
{
jsonSerializer.WriteObject(stream, temp);
}
}
private async Task getFormFile()
{
var jsonSerializer = new DataContractJsonSerializer(typeof(ObservableCollection<int>));
try
{
using (var stream = await ApplicationData.Current.LocalFolder.OpenStreamForReadAsync(file))
{
temp = (ObservableCollection<int>)jsonSerializer.ReadObject(stream);
}
}
catch
{
//if some error is caught while reading data from the file then initializing
//the collection to default constructor instance is a good choice
//again it's your choice and may differ in your scenario
temp = new ObservableCollection<int>();
}
}
Чтобы добавить некоторые функции в коде вы можете также иметь ensureDataLoaded()
функцию, которая позволит обеспечить, что данные считаны из файла JSON.
public async Task ensureDataLoaded()
{
if (temp.Count == 0)
await getFormFile();
return;
}
Перед использованием глобальной переменной temp
(имеющий ObservableCollection
) вызова функции ensureDataLoaded
. Это позволило бы избежать ненужных NullPointerExceptions
.
Какие проблемы и проблемы возникают у вас при запуске существующего кода .. просьба предоставить дополнительную информацию – MethodMan
Я хотел бы сохранить 'favmusei' в Local Storage – G111
это хорошо .. но какие у вас проблемы при запуске существующего код .. не просто сказать «Я хотел бы сохранить favmusei в локальном хранилище» отладить код и сообщить нам, где происходит сбой. – MethodMan