public static async Task SaveFileAsync(string FileName, T data)
{
MemoryStream memStream = new MemoryStream();
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
serializer.WriteObject(memStream, data);
StorageFile file = await ApplicationData.Current.LocalFolder.CreateFileAsync(FileName,
CreationCollisionOption.ReplaceExisting);
using (Stream stream = await file.OpenStreamForWriteAsync())
{
memStream.Seek(0, SeekOrigin.Begin);
await memStream.CopyToAsync(stream);
await stream.FlushAsync();
}
}
public static async Task<T> RestoreFileAsync(string FileName)
{
T result = default(T);
try
{
StorageFile file = await ApplicationData.Current.LocalFolder.GetFileAsync(FileName);
using (IInputStream inStream = await file.OpenSequentialReadAsync())
{
DataContractSerializer serializer = new DataContractSerializer(typeof(T));
result = (T)serializer.ReadObject(inStream.AsStreamForRead());
return result;
}
}
catch (FileNotFoundException)
{
return default(T);
}
}
Я использую этот код для сохранения и получения моих данных, и он отлично работает.локальное хранилище файлов удаляет контент автоматически
После сохранения моих данных в этом локальном файле и запуска моего приложения иногда нет данных.
Я сохраняю свои данные как файл .xml
.
Я проверяю файл каждый раз, когда я сохраняю и у него есть сохраненный контент. Но иногда он удаляет его, я не знаю, почему.
Я пробовал DataContractJsonSerializer
и все еще имею ту же проблему.
Является ли файл пустым или удаленным? ** Когда ** это происходит? Можете ли вы запустить приложение во время просмотра файла? – Jess
Нет, файл пуст, это происходит, когда я восстанавливаю данные, которые он удаляет, а не все время, только иногда, и иногда он хранит данные, которые я сохранил. –
Это часто проблема блокировки. Помогает ли эта статья? http://blog.jerrynixon.com/2013/02/walkthrough-locking-asynchronous-file.html –