zoukankan      html  css  js  c++  java
  • 快速构建Windows 8风格应用26本地应用数据

    本篇博文主要介绍如何获取应用的设置和文件容器、如何将数据写入设置、如何从设置中获取数据、如何删除设置中数据、如何将数据写入文件、如何从文件中获取数据。

    当应用安装时,系统会为设置和文件等应用数据提供它自己的每用户数据存储。我们不需要知道这些数据存在哪里或如何存储,因为系统会负责管理物理存储工作。我们只需使用应用数据API就可以了。

    本地应用数据一般用于当前设备数据的持久化,并且本地数据没有限制大小,通常情况使用本地数据存储大型数据集。

    如何获取应用的设置和文件容器

    1.使用ApplicationData.LocalSettings属性可以获取ApplicationDataContainer 对象中的设置。

    Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;

    2.使用 ApplicationData.LocalFolder 属性可以获取StorageFolder 对象中的文件。

    Windows.Storage.ApplicationDataContainer localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;

    如何将数据写入设置

    我们可以通过三种方式将数据写入设置。

    1.使用ApplicationDataContainer.Values属性。

    localSettings.Values["exampleSetting"] = "Hello Windows";

    使用键-值对的方式。

    2.使用ApplicationDataCompositeValue对象,进行一个复合的设置。

    Windows.Storage.ApplicationDataCompositeValue composite = new Windows.Storage.ApplicationDataCompositeValue();
    composite["intVal"] = 1;
    composite["strVal"] = "string";
     
    localSettings.Values["exampleCompositeSetting"] = composite;

    3.使用ApplicationDataContainer.CreateContainer方法创建设置容器,将数据添加到容器中。

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

    其中Windows.Storage.ApplicationDataCreateDisposition的枚举值Always表示该容器不存在的话进行创建。

    如何从设置中获取数据

    1.使用ApplicationDataContainer.Values属性获取数据。

    Object value = localSettings.Values["exampleSetting"];

    2.使用ApplicationDataContainer.Values属性获取复合设置中数据。

    Windows.Storage.ApplicationDataCompositeValue composite = 
       (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];
     
    if (composite == null)
    {   
    }
    else
    {   
    }

    3.使用ApplicationDataContainer.Values属性获取容器中数据

    bool hasContainer = localSettings.Containers.ContainsKey("exampleContainer");
    bool hasSetting = false;
     
    if (hasContainer)
    {
       hasSetting = localSettings.Containers["exampleContainer"].Values.ContainsKey("exampleSetting");
    }

    如何删除设置中数据

    1.使用ApplicationDataContainerSettings.Remove方法可以删除数据、复合数据设置以及容器设置。

    localSettings.Values.Remove("exampleSetting");

    如何将数据写入文件

    通常我们会使用Windows.Storage.StorageFolder.CreateFileAsyncWindows.Storage.FileIO.WriteTextAsync在本地数据存储中创建或更新文件。

    async void WriteTimestamp()
    {
       Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
           new Windows.Globalization.DatetimeFormatting.DateTimeFormatter("longtime");
     
       StorageFile sampleFile = await localFolder.CreateFileAsync("dataFile.txt", 
           CreateCollisionOption.ReplaceExisting);
       await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTime.Now));
    }

    其中CreationCollisionOption中的ReplaceExisting值表示若该文件不存在就创建,若存在就替换。

    如何从文件中获取数据

    通常我们会使用Windows.Storage.StorageFolder.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.ReadTextAsync在本地数据存储中打开或读取文件。

    async void ReadTimestamp()
    {
       try
       {
          StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
          String timestamp = await FileIO.ReadTextAsync(sampleFile);     
       }
       catch (Exception)
       {      
       }
    }

    MSDN中提供相关示例代码:Application data sample

  • 相关阅读:
    Nginx 启动错误 Failed to read PID from /run/nginx.pid
    CentOS7 下 nginx 无法加载 Django 静态文件的问题
    SSD + 机械硬盘装 CentOS 分区的问题
    CentOS7 单机维护模式
    编译安装 redis 6.2.1
    谷歌师兄刷题笔记
    我用 DCL 写出了单例模式,结果阿里面试官不满意!
    红黑树杀人事件始末
    头条二面:详述一条 SQL 的执行流程
    jvisual远程 springBoot项目
  • 原文地址:https://www.cnblogs.com/wzk89/p/2774006.html
Copyright © 2011-2022 走看看