UWP - 如何完全删除所有写入 LocalSettings 的数据?

UWP - How completely delete all data written in LocalSettings?

我正在开发 UWP 应用,我需要将数据存储为设置。

我使用 ApplicationData.Current.LocalSettings 并在其中混合存储简单数据和复合数据。当我的应用程序用户想要结束其会话时,我希望删除之前存储的所有数据。我使用了 ApplicationData.Current.ClearAsync()ApplicationData.Current.LocalSettings.Values.Clear() 并且它似乎有效但是当我检查存储这些设置的 settings.dat 文件时,我看到数据仍然存在并且只有它们与它们的密钥的连接是清除并使它们不可用。

问题是从版本到版本,在某些情况下我需要更改一些键甚至停止使用其中一些键,对于我描述的这个问题,与以前键相关的数据将保留在 settings.dat 并且文件大小会随着时间的推移而增长。

我需要一个解决方案来让我完全清除 settings.dat 内容(或至少是我写在其中的内容)。

您没有清除此处的本地设置。 ApplicationDataContainer.Valuesreturns一个PropertySet和Clear方法对应Collectionclass。所以它只清除你得到的集合而不是设置。您必须使用 Remove 方法根据键单独删除设置或使用 ApplicationDataContainer 来存储您的设置。您可以一次性删除存储在容器中的所有设置。 通过键单独删除设置:

ApplicationData.Current.LocalSettings.Values.Remove("key");

创建应用程序数据容器:

var LocalSettingsContainer = ApplicationData.Current.LocalSettings;
var container = LocalSettingsContainer.CreateContainer("ContainerName", ApplicationDataCreateDisposition.Always);

将设置添加到容器:

container.Values[Key] = Value;

删除一个容器:

LocalSettingsContainer.DeleteContainer("containerName");

PS:请注意,如果容器中有任何子容器,您将要删除指定容器中的设置以及子容器。 有关本地设置的更多信息,请参阅 documentation.

编辑: 您可以通过将 ApplicationDataContainer.Values 转换为 ApplicationDataContainerSettings 来获取 ApplicationDataContainer 中的键,其中包含键 属性可以单独删除设置。

var containerSettings = (ApplicationDataContainerSettings)ApplicationData.Current.LocalSettings.Values;
var keys = containerSettings.Keys;