UWP程序的AppData一般位于 C:\Users\<UserName>\AppData\Local\Packages\<PackageFamilyName>
目录下,该目录包含如下内容
常用的两个目录为:LocalState
和Settings
,其中LocalState
主要用来存储本地的文件如Log等内容。Settings
目录下的settings.dat则对应于ApplicationDataContainer
,即Windows.Storage.ApplicationData.Current.LocalSettings
ApplicationDataContainer
作为数据容器,它的层级结构和文件目录类似,其中可以直接包含Key-Value,也可以嵌套的包含子容器ApplicationDataContainer
。
其主要API及用法总结如下:
1. 直接存储 Key-Value 在 ApplicationData.Current.LocalSettings
的容器中(根容器)
直接在LocalSettings
上操作Key-Vlaue,此时所有的值都在 localSettings.Values 上
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
// 1.写入:若不存在则直接创建并写入,若存在则直接覆盖
localSettings.Values["key01"] = "val01";
// 读取:根据key值来读取对应的value值,需要注意若无对应的值,可能会抛异常
// 2-1. 先判断是否存在该key-value,若存在再去读取。
if (!localSettings.Values.ContainsKey("key02"))
{
string val02 = localSettings.Values["key02"].ToString();
}
// 2-2. 使用TryGetValue 避免不存在时抛异常,若不存在则 bRes=false
object val03;
bool bRes = localSettings.Values.TryGetValue("key03", out val03);
// 3. 删除指定的 key-value(需先判断是否存在)
localSettings.Values.Remove("key01");
// 4. 清除该容器中所有的数据
localSettings.Values.Clear();
2. 子容器中操作数据
首先获取根数据容器ApplicationData.Current.LocalSettings
,可以在根数据容器上创建和删除对应的子容器。如下的代码中 localSettings.Containers["myContainer"]
和 subLocalSettings
表示新创建的同一个子容器。
// 获取根数据容器,根容器无法删除
ApplicationDataContainer localSettings = ApplicationData.Current.LocalSettings;
// 创建子容器:若已存在则直接返回子容器,若不存在则直接创建对应的子容器
ApplicationDataContainer subLocalSettings = localSettings.CreateContainer("myContainer", ApplicationDataCreateDisposition.Always);
// 可以通过 localSettings 和 subLocalSettings来操作该子容器
if (localSettings.Containers.ContainsKey("myContainer"))
{
localSettings.Containers["myContainer"].Values["subKey01"] = "subVal01";
subLocalSettings.Values["subKey02"] = "subVal02";
}
if(subLocalSettings.Values.ContainsKey("subKey01"))
{
string v01 = subLocalSettings.Values["subKey01"].ToString();
}
// 删除指定的容器
localSettings.DeleteContainer("myContainer");
【参考资料】
标签:容器,ApplicationDataContainer,简介,UWP,Values,ApplicationData,LocalSettings,localSet From: https://www.cnblogs.com/Jeffxu/p/17435004.html