2012-06-16 34 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

好的建议,但它并没有真正回答这个问题 –

相关问题