【发布时间】:2013-02-19 03:22:45
【问题描述】:
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);
}
}
我正在使用此代码来保存和检索我的数据,它工作正常。
有时我启动我的应用程序,突然所有数据都被删除了,我真的不知道为什么。
我尝试了DataContractJsonSerializer 并将其保存为 .txt 文件,但仍然是同样的问题。
没有异常或错误。
我还检查了它自己的文件,.xml 和 .txt 删除了所有内容。
其实我很困惑。
【问题讨论】:
-
您在单元测试中看到这种行为了吗?在我的场景中,他们总是得到一个新的本地文件夹。删除内容时 ApplicationData.Current.LocalFolder 会发生变化吗?写简单的文字有问题吗?
-
是的,删除内容时本地文件夹更改,我没有任何其他问题,没有错误也没有例外,有时并不总是将其删除。
-
在四处挖掘之后,如果我更改 appxmanifest 中的任何内容,所有内容都会重新安装,但这也不是问题。我一直在测试应用程序,是不是因为我不时从 Visual Studio 运行应用程序?
-
我想是的。我的单元测试中有这种行为,而不是在运行的应用程序中。你是从模拟器、localpc 还是 remote pc 开始的?这有什么改变吗?
-
我一直在用一切测试我的应用程序,这是保存行为。
标签: c# windows-8 winrt-xaml c#-5.0