Windows Phone 8.1中应用数据之应用文件

来源:互联网 发布:没爱了网络语的意思 编辑:程序博客网 时间:2024/06/08 01:37

应用设置存储在存储数据方面有一些局限性,比如只能存储一些简单数据类型的数据,无法满足复杂的数据存储以及

大量的数据存储,所以需要应用文件存储来弥补这个缺陷。

每个应用拥有系统定义的三种文件:一个用于本地文件,一个用于漫游文件,还有一个用于临时文件。应用可以向根

目录添加新文件和新目录,和应用设置存储一样,应用文件一共最多可以嵌套32层深。

首先先明确一下三种文件的区别,这边同样要用到ApplicationData类:


1. 本地应用文件(ApplicationData.Current.LocalFolder)

存储在客户端的存储数据,没有总大小限制,存储的区域属于程序的沙箱里,只有应用程序自己才可以访问,保障了

数据的安全性。本地应用文件的根目录文件夹可以通过ApplicationData对象的LocalFolder属性来访问,即

ApplicationData.Current.LocalFolder。类型是文件夹对象StorageFolder。


2. 漫游应用文件(ApplicationData.Current.RoamingFolder)

漫游应用文件是指在同一账号登陆的不同设备中共享的数据,用户可以轻松地在多个设备之间保持应用的应用数据同

步。可以通过ApplicationData对象的RoamingFolder属性来访问,即

ApplicationData.Current.RoamingFolder。

a. 漫游数据大小有限制

大小由ApplicationData类的RoamingStorageQuota属性决定,RoamingStorageQuota属性表示获取可从漫游应

用程序数据存储区同步到云的数据的最大大小。所以,最好是仅为用户首选项、链接和小型数据文件使用漫游数据。

b. 数据改变需同步,及时回应

如果需要在程序中监控漫游数据的变化,应该注册处理ApplicationData类的DataChanged事件,处理操作在漫游

应用数据更改时执行。

c. 数据版本的统一性

在设备上更新应用之前,系统不会将应用数据更新到用户安装了该应用的其他设备。

d. 漫游数据有时间限制

漫游数据不是可以无限期同步的,有30天的时间间隔的限制。当然用户在这期间先卸载应用再安装应用,只要不超过

时间间隔,依然可以在云中同步漫游数据。

e. 漫游数据同步的时机依赖于网络和设备

系统会随机漫游应用数据,但不会保证及时同步。当设备没有联网或者网络高度延迟时,漫游也会明显延迟。当然,

可以通过一个特殊的设置键来设置一个高优先级别的漫游设置数据。

这个高优先级别的Key为HighPriority,系统会以更快的速度在多个设备间同步HighPriority所对应的数据。它也支持

ApplicationDatCompositeValue数据,但大小限制在8KB,当超过此限制时,将被是为常规漫游设置。

3. 临时应用文件(ApplicationData.Current.TemporaryFolder)

临时应用数据存储类似缓存,不会漫游,随时可以被删除,所以临时文件通常用于存储一些非重要性的临时文件信

息。临时应用文件的根目录文件夹可以通过ApplicationData类的TemporaryFolder属性来访问,即是

ApplicationData.Current.TemporaryFolder


获取应用文件根目录的方式,2种:

1. 除了上面提到的获取这三种根目录的方式,利用ApplicatonData类来获取:
ApplicationData.Current.LocalFolder-----本地文件夹
ApplicationData.Current.RoamingFolder-----漫游文件夹
ApplicationData.Current.TemporaryFolder-----临时文件夹

2. 还可以利用应用文件的URI方案获取:

三个根目录文件夹所对应的保存路径的格式分别如下:

(1)LocalFolder文件夹的保存路径格式:

%USERPROFILE%\APPDATA\Local\Packages\{PackageId}\LocalState

(2)RoamingFolder文件夹的保存路径格式:

%USERPROFILE%\APPDATA\Local\Packages\{PackageId}\RoamingState

(3)TemporaryFolder文件夹的保存路径格式:

%USERPROFILE%\APPDATA\Local\Packages\{PackageId}\TempState

但不能直接通过此路径来访问文件,而是需要使用本地文件夹的ms-appdata的URI方案:

(1)LocalFolder对应的URI方案为:

ms-appdata:///local/

(2)RoamingFolder对应的URI方案为:

ms-appdata:///roaming/

(3)TemporaryFolder对应的URI方案为:

ms-appdata:///temp/

知道了URI方案,之后只需要使用StorageFile类的静态方法GetFileFromApplicationUriAsync来根据URI获取文件。

var file = await StorageFile.GetFileFromApplicationUriAsync(new Uri("ms-appdata:///local/test.txt"));

注意点:文件和文件夹的路径在URI方案名称的最后一个斜杠后面不能超过185个字符。


0 0
原创粉丝点击