2
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刪除所有內容。 其實我很困惑。winRT存儲文件問題
您是否在unittests中看到過這種行爲?在我的場景中,他們總是得到一個新的本地文件夾內容被刪除後ApplicationData.Current.LocalFolder是否發生變化? 編寫簡單文本時有問題嗎? – 2013-02-17 12:09:44
是本地文件夾在內容被刪除時發生更改,我沒有任何其他問題,沒有錯誤沒有例外,有時並不總是隻是刪除它。 – 2013-02-18 07:33:57
挖掘周圍後,如果我改變了appxmanifest中的任何東西都會重新安裝,但這也不是問題。 我不斷測試應用程序,是否因爲我經常從Visual Studio不時運行應用程序? – 2013-02-18 07:37:08