2012-06-16 57 views
3

我想
得到的AppData.Local一個XML文件,並將其序列化到一個列表爲什麼我無法從WinRT的AppData中讀取XML?

我的代碼
的錯誤部分包含了哪些內容:

List<myTask> AllTaskList = await objectStorageHelper.LoadAsync(); 

myTask是簡單類:

public class myTask 
{ 
    public string myTitle { get; set; } 
    public string myDuetime { get; set; } 
} 

objectStorageHelper是Hel pClass從CodePlex,該LoadAsync部分低於:

public async Task<T> LoadAsync() 
    { 
     try 
     { 
      StorageFile file = null; 
      StorageFolder folder = GetFolder(storageType); 
      file = await folder.GetFileAsync(FileName()); 
      //file = await folder.CreateFileAsync("BetterTask.xml", CreationCollisionOption.OpenIfExists); 
      IRandomAccessStream readStream = await file.OpenAsync(FileAccessMode.Read); 
      Stream inStream = Task.Run(() => readStream.AsStreamForRead()).Result; 
      return (T)serializer.Deserialize(inStream); 
     } 
     catch (FileNotFoundException) 
     { 
      //file not existing is perfectly valid so simply return the default 
      return default(T); 
      //Interesting thread here: How to detect if a file exists (http://social.msdn.microsoft.com/Forums/en-US/winappswithcsharp/thread/1eb71a80-c59c-4146-aeb6-fefd69f4b4bb) 
      //throw; 
     } 
     catch (Exception) 
     { 
      //Unable to load contents of file 
      throw; 
     } 
    } 

什麼是

型「System.UnauthorizedAccessException的」的異常出現在mscorlib.dll,但在用戶代碼中沒有處理錯誤

額外的資料:訪問被拒絕(從HRESULT異常:0X80070005(E_ACCESSDENIED))

如果有這種異常的處理程序,程序可能會安全地繼續。

-
爲什麼會發生這種情況
我可以使用這個幫助類成功寫入文件?
但爲什麼我沒有權限讀取文件?
如何解決?

+0

也許這將幫助:HTTP://計算器。 com/a/5330436/1207991 – Gloopy

+0

你的應用程序是否有權限讀取這個文件/目錄? – Fixus

回答

0

變化

StorageFolder folder = GetFolder(storageType); 

StorageFolder folder = ApplicationData.Current.LocalFolder 

如果這工作那麼問題是您的文件夾權限。

0

變化

Stream inStream = Task.Run(() => readStream.AsStreamForRead()).Result; 
return (T)serializer.Deserialize(inStream); 

​​

inStream.Flush(); 
inStream.Dispose(); 

和相同的SaveAsync()

+1

好的建議,但它並沒有真正回答這個問題 –

相關問題