zoukankan      html  css  js  c++  java
  • WinStore之Application Data

    一、Application Data简介

      Applicaion Data相当于桌面应用的注册表,存储一些用户配置信息,如运行时状态,用户喜好等,需要注意的时,当卸载应用时,这些数据会被删除,所以不要存储重要数据。

      Applicaion Data即使在应用更新以后也不会丢失,有一个版本控制。

    二、按用途分类

    •   local 本地数据  只保存在当前设备.
    •   roaming 漫游数据 安装了的此用户的应用都可以同步。windows会自动帮你同步数据到微软的云服务器,但是会限制大小。如果用户30天内不用这些数据(例如程序卸载),会被服务器删除。
    •   temporary 临时数据  随时都可能被系统删除的数据.

    三、按存储方式分类 

      App settings

    •   用来保存配置数据,最深32层,不限数量,可以保存在本地且可以漫游。
    •   AppSettings支持除二进制外的所有WinRT数据格式,如果存储二进制数据得用文件。
    •   系统只验证数据格式和长度,不验证数据是否正确。

      用ApplicationData.LocalSettings这个静态属性来取得ApplicationDataContainer类类型的配置。

      App Files

    •   根目录下有三个系统自定义的文件夹:本地,漫游,临时。
    •   可以自己建文件夹,但是最多不超过32层,同样不限数量。

         用ApplicationData.LocalFolder这个静态属性来取StorageFolder类型的文件。

    四、代码示例

      存储本地数据

    复制代码
            ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;//存储单一配置的句柄
            ApplicationDataCompositeValue composite = new ApplicationDataCompositeValue();//存储多项配置句柄
            StorageFolder localFolder = ApplicationData.Current.LocalFolder;//存储文件句柄
          localSettings.Values["exampleSetting"] = "Hello Windows";;//存储单一配置       composite["intVal"] = 1;       composite["strVal"] = "string";       localSettings.Values["exampleCompositeSetting"] = composite;//存储多项配置
    复制代码

      建立配置层级

    复制代码
    ApplicationDataContainer container = 
       localSettings.CreateContainer("exampleContainer", ApplicationDataCreateDisposition.Always);
    
    if (localSettings.Containers.ContainsKey("exampleContainer"))
    {
       localSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello Windows";
    }
    复制代码

      读取配置  

      

    复制代码
    Object value = localSettings.Values["exampleSetting"];//a setting
    
    ApplicationDataCompositeValue composite = 
       (ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];
    
    if (composite == null)
    {
       // No data
    }
    else
    {
       // Access data in composite["intVal"] and composite["strVal"]
    }
    
    bool hasContainer = localSettings.Containers.ContainsKey("exampleContainer");
    bool hasSetting = false;
    
    if (hasContainer)
    {
       hasSetting = localSettings.Containers["exampleContainer"].Values.ContainsKey("exampleSetting");
    }
    复制代码

      删除配置

    复制代码
    localSettings.Values.Remove("exampleSetting");
    //ApplicationDataContainerSettings.Remove 
    
    localSettings.Values.Remove("exampleCompositeSetting");
    //ApplicationDataCompositeValue.Remove 
    
    localSettings.DeleteContainer("exampleContainer");
    //ApplicationDataContainer.DeleteContainer 
    复制代码
  • 相关阅读:
    all the tops
    es6 and typescript
    [leetcode]question5: Longest Palindromic Substring
    webpack and publish lib
    HTTPClient to use http/https protocol to send request
    《算法导论》-分治法-笔记
    《Linux C编程一站式学习》-笔记
    WIN7中同时打开多个独立Excel窗口
    RAD Studio XE6之Tpanel
    vb中StatusBar1.Panels(3).Text = Format(Date, "yyyy年mm月dd日")是什么意思
  • 原文地址:https://www.cnblogs.com/fuchongjundream/p/4011649.html
Copyright © 2011-2022 走看看