快速入门:本地应用数据 (HTML)
[ 本文适用于编写 Windows 运行时应用的 Windows 8.x 和 Windows Phone 8.x 开发人员。如果你要针对 Windows 10 进行开发,请参阅 最新文档 ]
了解存储和检索本地应用数据存储中的设置和文件的相关信息。
获取应用的设置和文件容器
使用 ApplicationData.localSettings 属性可以获取 ApplicationDataContainer 对象中的设置。使用 ApplicationData.localFolder 属性可以获取 StorageFolder 对象中的文件。
var localSettings = applicationData.localSettings;
var localFolder = applicationData.localFolder;
后面的步骤将使用此步骤中的 localSettings
和 localFolder
变量。
将数据写入设置
使用 ApplicationDataContainer.values 属性可以访问我们在上一步中获取的 localSettings
容器中的设置。此示例会创建一个名为 exampleSetting
的设置。
// Simple setting
localSettings.values["exampleSetting"] = "Hello Windows";
ApplicationDataCompositeValue 对象包含必须以原子方式访问的设置。此示例会创建一个名为 exampleCompositeSetting
的复合设置并将它添加到 localSettings
容器中。
// Composite setting
var 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
var container = localSettings.createContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.always);
if (localSettings.containers.hasKey("exampleContainer"))
{
localSettings.containers.lookup("exampleContainer").values["exampleSetting"] = "Hello Windows";
}
从设置中读取数据
使用 ApplicationDataContainer.values 属性可以访问 localSettings
容器中的 exampleSetting
设置。
// Simple setting
var value = localSettings.values["exampleSetting"];
if (!value)
{
// No data
}
else
{
// Access data in value
}
使用 ApplicationDataContainer.values 属性可以访问 localSettings
容器中的 exampleCompositeSetting
设置。
// Composite setting
var composite = localSettings.values["exampleCompositeSetting"];
if (!composite)
{
// No data
}
else
{
// Access data in composite["intVal"] and composite["strVal"]
}
使用 ApplicationDataContainer.values 属性可以访问 exampleContainer
容器中的 exampleSetting
设置。
// Setting in a container
var hasContainer = localSettings.containers.hasKey("exampleContainer");
if (hasContainer)
{
// Access data in localSettings.containers.lookup("exampleContainer").values.hasKey("exampleSetting");
}
将数据写入文件
使用文件 API(如 Windows.Storage.StorageFolder.createFileAsync 和 Windows.Storage.FileIO.writeTextAsync)在本地应用数据存储中创建和更新文件。此示例会在 localFolder
容器中创建一个名为 dataFile.txt
的文件并将当前日期和时间写入该文件中。CreationCollisionOption 枚举中的 replaceExisting 值指示替换该文件(如果存在的话)。
function writeTimestamp() {
localFolder.createFileAsync("dataFile.txt", Windows.Storage.CreationCollisionOption.replaceExisting)
.then(function (sampleFile) {
var formatter = new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");
var timestamp = formatter.format(new Date());
return Windows.Storage.FileIO.writeTextAsync(sampleFile, timestamp);
}).done(function () {
});
}
从文件中读取数据
使用文件 API(如 Windows.Storage.StorageFolder.getFileAsync、Windows.Storage.StorageFile.GetFileFromApplicationUriAsync 和 Windows.Storage.FileIO.readTextAsync)在本地应用数据存储中打开和读取文件。此示例打开在上一步中创建的 dataFile.txt
文件并从该文件中读取日期。CreationCollisionOption 枚举中的 openIfExists 值指示该文件必须存在。有关从多个位置加载文件资源的详细信息,请参阅如何加载文件资源。
function readTimestamp() {
localFolder.getFileAsync("dataFile.txt")
.then(function (sampleFile) {
return Windows.Storage.FileIO.readTextAsync(sampleFile);
}).done(function (timestamp) {
// Data is contained in timestamp
}, function () {
// Timestamp not found
});
}
删除已完成使用的设置
调用 ApplicationDataContainerSettings.remove 方法可在完成对 exampleSetting
设置的使用之后将其删除。
// Simple setting
localSettings.values.remove("exampleSetting");
调用 ApplicationDataCompositeValue.remove 方法可在完成对 exampleCompositeSetting
复合设置的使用之后将其删除。
// Delete composite setting
localSettings.values.remove("exampleCompositeSetting");
调用 ApplicationDataContainer.deleteContainer 方法可在完成对 exampleContainer
设置容器的使用之后将其删除。
// Delete container
localSettings.deleteContainer("exampleContainer");
相关主题
任务
概念
参考
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
示例