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

4

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

结构:

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

要加载的XML文件名基于当前UI文化。构建文件名很容易,但我如何检查是否存在当前UI文化的本地化版本?

在Windows Phone 7中,System.IO.File.Exists()不可用。我可以为手机支持的每种文化创建一个虚拟文件,但这很丑陋,容易出错,并且不允许回退到中性语言。有什么想法吗?

3个回答

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

relativePath 不应以斜杠开头


2
据我所知,无法枚举 XAP 文件中包含的文件。由于您是创建 XAP 的人,因此应该知道哪些文件存在,哪些不存在。如果您要加载本地化版本或者在前者不存在时回退到默认版本,则可以创建另一个文件,列出所有可用的本地化版本,而不是枚举软件包中的文件。
或者,您可以在 try-catch 中使用类似于 XDocument.Load() 的方法。它可能会抛出 FileNotFoundException 异常,您可以处理该异常,然后加载默认版本。

1

如果文件的构建操作标记为“资源”,那么您必须在本地路径前加上“/;component/”字符串才能成功加载资源。

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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接