我正在使用Windows 8开发人员预览版。我希望开发一个读取XML文件的应用程序。可能吗?当我尝试使用XDocument.Load(string uri)
时,它会抛出一个拒绝访问的异常,并且没有FileStream
这样的类。我知道metro风格的应用程序基于Silverlight,它无法访问文件系统,但它实际上是一个桌面应用程序,所以我不能读取文件?有没有解决方法?我对银光很新,所以也许我只是不知道路?
答案 0 :(得分:5)
阅读Ari Polsky给this question at MSDN的答案。
基本上,要访问文件,您需要获得许可才能访问该文件。要获得该权限,用户必须通过使用提供的选择器之一选择其所在文件夹文件来执行此操作。 另一种选择是声明您要访问清单中的某个文件夹。但这仅适用于“图书馆”位置。
答案 1 :(得分:5)
每个Metro应用程序都是沙盒。您需要指定从文档库或可移动存储中读取文件的功能,并将特定类型与程序包清单相关联。或者,您可以使用文件选择器,以便用户专门授予您访问某个文件的权限。
引自Access to user resources using the Windows Runtime:
removableStorage功能提供对文件的编程访问 在可移动存储设备上,例如USB密钥和外部硬盘驱动器, 过滤到包中声明的文件类型关联 表现。例如,如果PDF阅读器应用程序声明了.pdf文件类型 关联,它可以在可移动存储设备上打开.pdf文件, 但不是其他类型的文件。
声明时应小心 这种能力,因为用户可能包含各种信息 他们的可移动存储设备,并寻找有效的理由 来自应用程序。
或者,应用可以使用文件选择器进行访问 可移动存储设备上的特定文件(如果不需要) 完全程序化访问。