zoukankan      html  css  js  c++  java
  • WP8.1学习系列(第二十一章)——本地应用数据

    Applies to Windows and Windows Phone

    了解如何存储和检索本地应用数据存储中的设置和文件。

    路线图: 本主题与其他主题有何关联?请参阅:

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

    使用 ApplicationData.LocalSettings 属性可以获取 ApplicationDataContainer 对象中的设置。使用ApplicationData.LocalFolder 属性可以获取 StorageFolder 对象中的文件。

     
    Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
    Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
    
    

    后面的部分使用此部分中的 localSettings 和 localFolder 变量。

    将数据写入设置

    使用 ApplicationDataContainer.Values 属性可以访问我们在上一步中获取的 localSettings 容器中的设置。此示例会创建一个名为 exampleSetting 的设置。

    // Simple setting
    
    localSettings.Values["exampleSetting"] = "Hello Windows";
    
    

    ApplicationDataCompositeValue 对象包含必须以原子方式访问的设置。此示例会创建一个名为exampleCompositeSetting 的复合设置并将它添加到 localSettings 容器中。

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

    调用 ApplicationDataContainer.CreateContainer 方法可创建设置容器。此示例创建一个名为exampleContainer 的设置容器并添加一个名为 exampleSetting 的设置。ApplicationDataCreateDisposition枚举中的 Always 值指示创建容器(如果尚不存在的话)。

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

    从设置中读取数据

    使用 ApplicationDataContainer.Values 属性可以访问 localSettings 容器中的 exampleSetting 设置。

    // Simple setting
    
    Object value = localSettings.Values["exampleSetting"];
    
    

    使用 ApplicationDataContainer.Values 属性可以访问 localSettings 容器中的 exampleCompositeSetting 设置。

    // Composite setting
    
    Windows.Storage.ApplicationDataCompositeValue composite = 
       (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];
    
    if (composite == null)
    {
       // No data
    }
    else
    {
       // Access data in composite["intVal"] and composite["strVal"]
    }
    
    

    使用 ApplicationDataContainer.Values 属性可以访问 exampleContainer 容器中的 exampleSetting 设置。

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

    将数据写入文件

    使用文件 API(如 Windows.Storage.StorageFolder.CreateFileAsync 和Windows.Storage.FileIO.WriteTextAsync)在本地应用数据存储中创建和更新文件。此示例会在 localFolder容器中创建一个名为 dataFile.txt 的文件并将当前日期和时间写入该文件中。CreationCollisionOption 枚举中的ReplaceExisting 值指示替换该文件(如果存在的话)。

    • Applies to Windows Phone

    在 Windows Phone 设备上,默认情况下会备份应用数据。如果你不想要备份某个文件,请将其保存在应用的本地存储的 LocalCache 子文件夹中。

     
    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));
    }
    
    

    从文件中读取数据

    使用文件 API(如Windows.Storage.StorageFolder.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsync 和 Windows.Storage.FileIO.ReadTextAsync)在本地应用数据存储中打开和读取文件。此示例打开在上一步中创建的 dataFile.txt 文件并从该文件中读取日期。有关从多个位置加载文件资源的详细信息,请参阅如何加载文件资源

    async void ReadTimestamp()
    {
       try
       {
          StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
          String timestamp = await FileIO.ReadTextAsync(sampleFile);
          // Data is contained in timestamp
       }
       catch (Exception)
       {
          // Timestamp not found
       }
    }
    
    

    删除已完成使用的设置

    调用 ApplicationDataContainerSettings.Remove 方法可在完成对 exampleSetting 设置的使用之后将其删除。

    // Delete simple setting
    
    localSettings.Values.Remove("exampleSetting");
    
    

    调用 ApplicationDataCompositeValue.Remove 方法可在完成对 exampleCompositeSetting 复合设置的使用之后将其删除。

    // Delete composite setting
    
    localSettings.Values.Remove("exampleCompositeSetting");
    
    

    调用 ApplicationDataContainer.DeleteContainer 方法可在完成对 exampleContainer 设置容器的使用之后将其删除。

     
    // Delete container
    
    localSettings.DeleteContainer("exampleContainer");
    
  • 相关阅读:
    java NIO 总结
    NIO 服务器和客户端 demo
    nio channel demo
    使用docker制作zookeeper镜像
    java BIO模型demo
    IDEA中语句添加try....catch..语句块
    线程的几种创建方式
    海豚调度Dolphinscheduler源码分析(四)
    @PostConstruct注解
    zookeeper常用命令
  • 原文地址:https://www.cnblogs.com/bvin/p/4282574.html
Copyright © 2011-2022 走看看