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
    }

 

posted @ 2015-08-26 14:02  Tonge  阅读(1877)  评论(0编辑  收藏  举报