zoukankan      html  css  js  c++  java
  • UWP:本地应用数据

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

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

    注意:每个设置的名称最长可为 255 字符。每个设置的大小可以多达 8K 字节,而每个复合设置的大小可以多达 64K 字节。

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

    下面是我封装的对应用数据操作的一个帮助类,主要围绕以上两个API:

       public class AppDataHelper
        {
            #region 字段
            /// <summary>
            /// 获取应用的设置容器
            /// </summary>
            private static Windows.Storage.ApplicationDataContainer localSettings = Windows.Storage.ApplicationData.Current.LocalSettings;
    
            /// <summary>
            /// 获取独立存储文件
            /// </summary>
            private static Windows.Storage.StorageFolder localFolder = Windows.Storage.ApplicationData.Current.LocalFolder;
            #endregion
    
            #region Set应用设置(简单设置,复合设置,容器中的设置)
            /// <summary>
            /// 简单设置
            /// </summary>
            /// <param name="key"></param>
            /// <param name="value"></param>
            public static void SetValue(string key, string value)
            {
                localSettings.Values[key] = value;
            }
    
            /// <summary>
            /// 复合设置
            /// </summary>
            /// <param name="composite"></param>
            public static void SetCompositeValue(Windows.Storage.ApplicationDataCompositeValue composite)
            {
                composite["intVal"] = 1;
                composite["strVal"] = "string";
    
                localSettings.Values["exampleCompositeSetting"] = composite;
            }
    
            /// <summary>
            /// 创建设置容器
            /// </summary>
            /// <param name="containerName"></param>
            /// <returns></returns>
            private static Windows.Storage.ApplicationDataContainer CreateContainer(string containerName)
            {
                return localSettings.CreateContainer(containerName, Windows.Storage.ApplicationDataCreateDisposition.Always);
            }
    
            /// <summary>
            /// 讲设置保存到设置容器
            /// </summary>
            /// <param name="containerName"></param>
            /// <param name="key"></param>
            /// <param name="value"></param>
            public static void SetContainerValue(string containerName, string key, string value)
            {
                if (!localSettings.Containers.ContainsKey(containerName))
                    CreateContainer(containerName);
    
                localSettings.Containers[containerName].Values[key] = value;
            }
            #endregion
    
            #region Get应用设置(简单设置,复合设置,容器中的设置)
    
            /// <summary>
            /// 获取应用设置
            /// </summary>
            /// <param name="key"></param>
            /// <returns></returns>
            public static object GetValue(string key)
            {
                return localSettings.Values[key];
            }
    
            /// <summary>
            /// 获取复合设置
            /// </summary>
            /// <param name="compositeKey"></param>
            /// <returns></returns>
            public static Windows.Storage.ApplicationDataCompositeValue GetCompositeValue(string compositeKey)
            {
                // Composite setting
                Windows.Storage.ApplicationDataCompositeValue composite =
                   (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values[compositeKey];
    
                return composite;
            }
    
            /// <summary>
            /// 从设置容器中获取应用设置
            /// </summary>
            /// <returns></returns>
            public static object GetValueByContainer(string containerName, string key)
            {
                bool hasContainer = localSettings.Containers.ContainsKey(containerName);
    
                if (hasContainer)
                {
                    return localSettings.Containers[containerName].Values.ContainsKey(key);
                }
                return null;
            }
            #endregion
    
            #region Remove已完成的设置
            /// <summary>
            /// 删除简单设置或复合设置
            /// </summary>
            /// <param name="key"></param>
            public static void Remove(string key)
            {
                localSettings.Values.Remove(key);
            }
    
            /// <summary>
            /// 删除设置容器
            /// </summary>
            /// <param name="key"></param>
            public static void RemoveContainer(string containerName)
            {
                localSettings.DeleteContainer(containerName);
            }
    
            #endregion
    
            #region 文件存储操作
    
            /// <summary>
            /// 写入文件
            /// </summary>
            public async void WriteTimestamp(string fileName,string contents)
            {
                try
                {
                    Windows.Storage.StorageFile sampleFile = await localFolder.CreateFileAsync(fileName, Windows.Storage.CreationCollisionOption.ReplaceExisting);
                    await Windows.Storage.FileIO.WriteTextAsync(sampleFile, contents);
                }
                catch (Exception)
                {
                    throw;
                }
              
            }
    
            /// <summary>
            /// 读取文件
            /// </summary>
            public async Task<string> ReadTimestamp(string fileName)
            {
                try
                {
                    Windows.Storage.StorageFile sampleFile = await localFolder.GetFileAsync(fileName);
                    string contents = await Windows.Storage.FileIO.ReadTextAsync(sampleFile);
                    return contents;
                }
                catch (Exception)
                {
                    return "read faild";
                }
            }
            #endregion
        }
  • 相关阅读:
    2017.10.3 QBXT 模拟赛
    2017.10.2 QBXT 模拟赛
    2017.10.1 QBXT 模拟赛
    BZOJ 1093: [ZJOI2007]最大半连通子图
    BZOJ 1002: [FJOI2007]轮状病毒
    洛谷 P1079 Vigenère 密码
    LibreOJ #100. 矩阵乘法
    洛谷 P1379 八数码难题
    COGS 2794. 爱摔跤的比利海灵顿
    【渗透测试小白系列】之Banner信息收集
  • 原文地址:https://www.cnblogs.com/tonge/p/4760217.html
Copyright © 2011-2022 走看看