如何检查XAP中的文件是否存在

本文关键字:文件 是否 存在 XAP 何检查 检查 | 更新日期: 2023-09-27 17:59:29

我正在编写一个WindowsPhone7应用程序,它从部署在XAP中的XML文件加载示例数据。这些XML文件是本地化的,因此每个支持的区域性都有一个文件。

结构:

SampleData.xml
SampleData.de.xml
SampleData.fr.xml
SampleData.it.xml
...

要加载的XML的名称基于当前的UI区域性。生成文件名很容易,但如何检查当前UI区域性的本地化版本?

系统。IO.File.Exists()在Windows Phone 7中不可用。我可以为手机支持的每个区域性创建一个伪文件,但这很难看,很容易出错,而且不允许回退到中性语言。有什么想法吗?

如何检查XAP中的文件是否存在

private bool IsFileExists(string relativePath)
{
    return Application.GetResourceStream(new Uri(relativePath, UriKind.Relative)) != null;
}

relativePath不应以斜杠开头

AFAIK无法枚举XAP文件中包含的文件。既然您是创建XAP的人,那么您应该知道哪些文件存在,哪些文件不存在。如果您试图加载本地化版本,或者如果前者不存在,则返回到默认版本,那么,您可以创建另一个文件,列出所有可用的本地化版本,而不是枚举包中的文件。

或者,您可以在try-catch中使用类似XDocument.Load()的东西。它可能会抛出一个FileNotFoundException,您可以处理它,然后加载默认版本。

如果文件标记有构建操作"Resource",则必须在本地路径前加上"/;component/"字符串才能成功加载资源。

return Application.GetResourceStream(new Uri("/PhoneProject1;component/" + relativePath, UriKind.Relative)) != null;