【发布时间】:2013-02-16 13:35:36
【问题描述】:
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 仍然有同样的问题。
【问题讨论】:
-
文件是空的还是被删除了? **什么时候**会发生这种情况?可以边看文件边运行应用吗?
-
不,文件是空的,当我恢复它删除它的数据时会发生这种情况,而不是所有时候,只是有时,有时它会保存我保存的数据。
-
这通常是一个锁定问题。这篇文章有帮助吗? blog.jerrynixon.com/2013/02/…
标签: c# windows-8 xml-serialization windows-runtime