转载于:http://msdn.microsoft.com/zh-cn/library/windowsphone/develop/ff402541(v=vs.105).aspx
适用于: Windows Phone 8 | Windows Phone OS 7.1
本主题描述数据存储位置,可以用于访问数据的 API,以及支持这些 API 的 Windows Phone 版本。本主题还列出了 Windows Phone 8 上支持的 Win32 存储 API。
本节仅限于手机上存储的持久性数据。有关保存应用程序和页面状态的信息,请参见 Windows Phone 的应用激活和取消激活。有关访问未存储在手机上的数据的信息,请参见 Windows Phone 的通信。 |
本主题包含以下各节。
安装文件夹是只读文件夹,包含应用包的文件。在 Windows Phone OS 7.1 中,您可能已经听过此文件夹被称为“appdata”文件夹。您可以使用以下 API 访问安装文件夹。
API | 说明 | 受 Windows Phone OS 7.1 支持 | 受 Windows Phone 8 支持 |
---|---|---|---|
使用此方法从安装文件夹查看文件。有关示例,请参见如何使用 Windows Phone 应用部署参考数据库。 | ![]() | ![]() | |
要连接到作为应用程序包的一部分的参考数据库,请在创建本地数据库对象时在路径中使用安装文件夹协议。有关示例,请参见Windows Phone 的本地数据库连接字符串。 | ![]() | ![]() | |
当前 Package 类的 InstalledLocation 属性返回安装文件夹作为 StorageFolder 对象。使用 Path 属性获取安装文件夹的完整路径。 | ![]() | ![]() | |
使用安装文件夹中的文件和文件夹时,结合使用这些 API。 | ![]() | ![]() |
安装文件夹 URI 方案
在路径中,使用 appdata 或 ms-appx URI 方案名称编写安装文件夹地址。尽管这些 URI 方案指向同一位置,但不可互换使用。在使用 Windows 命名空间中的 API 编写安装文件夹地址时,使用“ms-appx:///”。对于其他 API,使用“appdata:/”。以下代码所示为如何使用这些 URI 方案的一些示例。
// Reference the installation folder with the appdata URI scheme. Uri myInitialSettingsFileUri = new System.Uri("appdata:/AppSetup/initialSettings1.xml"); // Get a file from the installation folder with the ms-appx URI scheme. var file = await Windows.Storage.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appx:///AppSetup/initialSettings2.xml"));
ms-appx 需要三个斜杠(“///”),而 appdata 仅需要一个斜杠(“/”)。 |
本地文件夹是应用程序数据存储的根文件夹。本地文件夹在 Windows Phone OS 7.1 中称为独立存储,它独立于其他应用程序。可使用此文件夹在手机上持久保存数据。
API | 说明 | 受 Windows Phone OS 7.1 支持 | 受 Windows Phone 8 支持 |
---|---|---|---|
本地数据库文件存储在本地文件夹中。要连接到本地数据库,请在创建本地数据库对象时在路径中使用本地文件夹协议。有关更多信息,请参见 Windows Phone 本地数据库。 | ![]() | ![]() | |
使用本地文件夹中的键/值对。有关示例,请参见如何为 Windows Phone 创建设置页面。 | ![]() | ![]() | |
使用本地文件夹中的文件和文件夹。有关示例,请参见如何为 Windows Phone 存储文件和文件夹。 | ![]() | ![]() | |
在使用本地文件夹中的文件和文件夹时,结合使用这些 API。 | ![]() | ![]() | |
当前 ApplicationData 类的 LocalFolder属性返回本地文件夹作为 StorageFolder对象。使用 Path 属性获取本地文件夹的完整路径。 | ![]() | ![]() |
本地文件夹 URI 方案
在路径中,使用 isostore 或 ms-appdata URI 方案名称编写本地文件夹地址。尽管这两种 URI 方案都可以用来访问本地文件夹,但它们不可以互换使用。对 Windows 命名空间中的 API,使用“ms-appdata:///local/”编写本地文件夹的根目录。对所有其他 API,使用“isostore:/”编写本地文件夹的根目录。以下代码所示为如何使用这些 URI 方案的一些示例。
// Create a local database in the local folder with the isostore URI scheme. MyDataContext db = new MyDataContext("isostore:/mydb.sdf"); // Get a file from the local folder with the ms-appdata URI scheme. var file = await Windows.StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/AppConfigSettings.xml"));
ms-appdata 需要三个斜杠(“///”),而 isostore 仅需要一个斜杠(“/”)。 |
不论您在应用中使用何种 URI 方案,新文件和文件夹的路径在 URI 方案名称的最后一个斜杠后面不能超过 185 个字符。例如,isostore:/mydb.sdf 的路径使用了 8 个字符,未超过可用的 185。
本地文件夹中的特殊用途文件夹
除了常规数据存储外,本地文件夹用于下列特殊用途情形:如果您的应用在本地文件夹中迭代以查找它创建的目录,则请记住这些文件夹。
路径 | 用途 | 注释 |
---|---|---|
Shared | 用于托管 Media、ShellContent 和Transfers 文件夹。 | 该文件夹在应用程序安装时创建,但可以将其删除。 |
Shared/Media | 专辑封面:应用可以在播放背景音频时使用此文件夹在通用音量控件 (UVC) 中显示专辑封面。 | 该文件夹在应用程序安装时创建,但可以将其删除。有关更多信息,请参见如何与 Windows Phone 的“音乐和视频”中心集成。 |
Shared/ShellContent | 图块:图块可以显示每个图块正面和背面上的背景图像。背景图像可以存储在本地文件夹,但是必须位于此文件夹或其子文件夹中。 | 该文件夹在应用程序安装时创建,但可以将其删除。有关更多信息,请参见Windows Phone 的图块。 |
Shared/Transfers | 后台文件传输:即使当应用不再在前台中运行时,应用仍可以将文件保存到后台中的本地文件夹。 | 该文件夹在应用程序安装时创建,但可以将其删除。有关更多信息,请参见Windows Phone 的后台文件传输。 |
PlatformData | 照片选择器任务 | 当应用使用照片选择器任务时创建此文件夹。有关更多信息,请参见如何使用 Windows Phone 的照片选取器任务。 |
浏览本地文件夹
使用独立存储资源管理器 (ISETool.exe) 可列出、复制和替换本地文件夹中的文件和目录。独立存储资源管理器是一个随 Windows Phone SDK 一起安装的命令行工具。可以使用此工具验证文件是否保存在正确的位置,以及是否具有正确的数据。可以在模拟器或设备上使用独立存储资源管理器。有关更多信息,请参见如何使用 Windows Phone 的独立存储资源管理器工具。
媒体库是操作系统在手机上存储照片、音乐和视频的地方。库中媒体的存储是内部存储和外部存储(SD 卡,如果手机上提供)的结合。然而,媒体库是虚拟存储容器,它不区分文件的存储位置。您可以使用以下 MediaLibraryAPI 访问媒体库中的文件。媒体库扩展 API(来自 Microsoft.Xna.Framework.Media.PhoneExtensions 命名空间)提供了媒体库对象的附加功能。有关使用媒体的详细信息,请参见 Windows Phone 的媒体。
要访问应用中的媒体,您必须在应用清单文件 WMAppManifest.xml 中指定适用功能。有关更多信息,请参见 Windows Phone 的应用清单文件。 |
媒体库 API | 说明 | 受 Windows Phone OS 7.1 支持 | 受 Windows Phone 8 支持 |
---|---|---|---|
Albums、Artists 和 Songs | 只读音乐访问。 | ![]() | ![]() |
Pictures、RootPictureAlbum和 SavedPictures | 只读照片访问。 | ![]() | ![]() |
将照片添加到“保存的图片”文件夹和“本机拍照”文件夹。 | ![]() | ![]() | |
添加和删除媒体库中的歌曲。注意:保存歌曲时不要使用 isostore URI 方案名称。 | ![]() | ![]()
| |
从指定的 Picture 对象获取照片的文件路径。 | ![]() | ![]() |
您必须设置到 Microsoft.Xna.Framework.Media 命名空间的引用,以在 Windows Phone OS 7.1 应用中使用这些 API。此引用在新的 Windows Phone 8 项目中已设置。若要使用媒体库扩展 API,请在您的 Windows Phone 8 应用中设置到 Microsoft.Xna.Framework.Media.PhoneExtensions 的引用。 |
直接访问 SD 卡是只读访问,并且仅限于您的应用程序注册的用来处理文件关联的文件类型。有关使用外部存储的更多信息,请参见从 Windows Phone 8 上的 SD 卡读取。
可以使用以下 API 读取 SD 卡。
API | 说明 | 受 Windows Phone OS 7.1 支持 | 受 Windows Phone 8 支持 |
---|---|---|---|
表示 SD 卡。使用ExternalStorageID 属性位置标识一张卡。 | ![]() | ![]() | |
返回手机中插入的 SD 卡的集合。此集合将包含不超过一张 SD 卡。 | ![]() | ![]() | |
表示一张 SD 卡上的文件夹。稍后可使用 Path 属性来访问文件夹。 | ![]() | ![]() | |
表示一个 SD 卡上的文件。稍后可使用 Path 属性来访问文件。 | ![]() | ![]() | |
直接从外部存储设备对象获取文件或文件夹。 | ![]() | ![]() |
若要从应用访问 SD 卡,您必须在应用清单文件 WMAppManifest.xml 中指定 ID_CAP_REMOVABLE_STORAGE 功能。有关更多信息,请参见 Windows Phone 的应用清单文件。