zoukankan      html  css  js  c++  java
  • 04、应用程序数据操作(上)

     1、files:

        在应用程序中用户的数据可以存储在文件中。共有三个地方可以用来存放文件:

                  Windows.Storage.ApplicationData.current.localFolder

               Windows.Storage.ApplicationData.current.roamingFolder

              Windows.Storage.ApplicationData.current.temporaryFolder

    导读(Local、Roaming、Temporary files):

         文件适用于存储大的数据集,数据库,或者普通文件格式的数据. 并且文件可以放在本地,云端(漫游),或者临时文件夹中.

         文件可以通过用户登录的计算机被同步到与用户账户相关的云端。位于云端的文件并不是持久的:操作系统会权衡几个因素

    从而决定什么时候发送这些数据。传送到云端的数据应在低于配额(具体取决于云端数据存储配额属性),否则会被暂停向云端传输

    数据. 当应用程序在向文件中写数据时,该文件是不会被传送到云端的,所以当文件不需要再进行操作时尽可能把他们关闭.

           位于本地的文件是不会被同步到云端的,它们的读写方式和之前的类似.

            位于临时文件夹中的文件当不被使用时会被删除的. 操作系统会权衡比如这些文件的体积、在操作系统中保存的时间从而决定

      什么时候、是否删除这个临时文件。

              

    下面的示例是对漫游文件夹进行 读/写 文件操作,对于本地的和临时文件的操作和这个类似:

    StorageFolder roamingFolder = ApplicationData.Current.RoamingFolder;  //获取漫游(云)的文件夹
    
      const string filename = "sampleFile.txt";   //存储数据的文件
    
    int counter = 99; //存储在文件夹中的数据
    //把该数据存储到文件中
      StorageFile file = await roamingFolder.CreateFileAsync(filename, CreationCollisionOption.ReplaceExisting);
       await FileIO.WriteTextAsync(file, counter.ToString());
               //从文件中把数据读取出来
                 try
                {
                    StorageFile file = await roamingFolder.GetFileAsync(filename);
                    string text = await FileIO.ReadTextAsync(file);
    
                    OutputTextBlock.Text = "Counter: " + text;
    
                    counter = int.Parse(text);
                }
                catch (Exception)
                {
                    
                }

    2、settings:

            在应用中主要存储设置数据的方法是把他们放为 键值对(key-value)的形式,例如:

    Windows.Storage.ApplicationData.current.localSettings

    Windows.Storage.ApplicationData.current.roamingSettings

    ,同时可以把它们存储到当前设备的 localSettings 中,或者使用 roamingSettings ,从而设置可以再用户的其它设备(pc)之间进行交互。对于漫游(roaming)设置的方式而言,同时取决于 HighPriority 属性和 DataChanged 事件。

         导读(Settings): Settings 是一种适用于在应用程序中体积较小、零碎的配置方式。

           Settings  可以用于本地(local)或者 (云端)roaming。

           漫游的设置(Roaming settings)可以通过用户用 微软账号登录的计算机同步到云端。漫游的设置不是持久的。操作系统通过权衡一些因素来决定什么时候发送这些数据。并且云端的数据必须保持在配额范围内,否则数据传输会被暂停。

            用户首选项为你的应用程序是一个重要的因素,为漫游的设置。用户首选项通常是固定在数量和规模较小。用户将感谢你的应用程序是定制他们更喜欢在他们所有的机器。

            本地数据不会被同步到云端.

             应该小心防范过度卷的数据存储在设置中。设置并不旨在用作数据库。大型数据集将需要更长的时间来从磁盘加载在你的应用程序。

           

         在这个示例中,展示如何读、写、清除位于本地的(local settings)的设置,漫游的设置(roaming settings)和这个类似:

           ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings; //获取本地的设置对象
            const string SettingName = "exampleSetting";//存储在设置中的数据的键
      localSettings.Values[SettingName] = "Hello World"; // 保存数据
     Object value = localSettings.Values[SettingName];//读取数据
    
     OutputTextBlock.Text = String.Format("Setting: {0}", (value == null ? "<empty>" : ("\"" + value + "\"")));  
     localSettings.Values.Remove(SettingName);//删除数据

     3、Setting Container

          Setting Container 本质上是设置的一些分组。它们对于设置的组织非常有用。可以通过使用:

    Windows.Storage.ApplicationData.current.localSettings.createContainer  和

    Windows.Storage.ApplicationData.current.localSettings.deleteContainer 去读、写和删除设置一个 setting container。

     ApplicationDataContainer localSettings = = ApplicationData.Current.LocalSettings;  //获取本地的设置对象
    
      const string containerName = "exampleContainer";//容器的名称
            const string settingName = "exampleSetting";//键的名称
    ApplicationDataContainer container = localSettings.CreateContainer(containerName, ApplicationDataCreateDisposition.Always);//在当前设置容器中创建或打开指定的设置容器。
     if (localSettings.Containers.ContainsKey(containerName))
                {
                    localSettings.Containers[containerName].Values[settingName] = "Hello World"; // example value
                }  //判断设置中是否包含该容器名称,如果包含则读取相应的键的值
     bool hasContainer = localSettings.Containers.ContainsKey(containerName);//判断设置容器中是否包含容器的名称
                bool hasSetting = hasContainer ? localSettings.Containers[containerName].Values.ContainsKey(settingName) : false;//如果包含该容器,就判断该设置容器是否该键值对
    
                String output = String.Format("Container Exists: {0}\n" +
                                              "Setting Exists: {1}",
                                              hasContainer ? "true" : "false",
                                              hasSetting ? "true" : "false");
    
                OutputTextBlock.Text = output;
    //如果设置容器组中包含该设置容器,则删除该容器中的相应键值对  
    if (localSettings.Containers.ContainsKey(containerName))
                {
                    localSettings.Containers[containerName].Values.Remove(settingName);
                }
  • 相关阅读:
    Java面向对象之封装静态
    分布式平台Spark环境的搭建
    高斯混合模型
    异常排除: 调用方未由服务进行身份验证
    HttpClient介绍和简单使用流程
    阿里短信服务的使用流程
    笔记工具选择
    特效图文制作
    语言基础(23):智能指针
    无线通信基础(一):无线网络演进
  • 原文地址:https://www.cnblogs.com/hebeiDGL/p/2685293.html
Copyright © 2011-2022 走看看