Краткое руководство: перемещаемые данные приложения (HTML)
[ Эта статья адресована разработчикам приложений среды выполнения Windows для Windows 8.x и Windows Phone 8.x. При разработке приложений для Windows 10 см. раздел последняя документация]
Информация о хранении и извлечении параметров и файлов из хранилища перемещаемых данных приложения. Информацию о хранилище перемещаемых данных приложения и преимуществах его использования см. в разделе Перемещаемые данные приложения.
Регистрация для получения уведомлений об изменении перемещаемых данных
В следующем примере datachangeHandler
определяется как обработчик изменений перемещаемых данных.
var applicationData = Windows.Storage.ApplicationData.current;
function initialize()
{
applicationData.addEventListener("datachanged", datachangeHandler);
}
function dataChangeHandler(eventArgs)
{
// TODO: Refresh your data
}
Получение контейнеров для параметров и файлов приложения
Используйте свойство ApplicationData.roamingSettings для получения параметров, а свойство ApplicationData.roamingFolder для получения файлов.
var roamingSettings = applicationData.roamingSettings;
var roamingFolder = applicationData.roamingFolder;
Переменные roamingSettings
и roamingFolder
из этого шага используются в следующих действиях.
Запись данных в параметр
Используйте свойство ApplicationDataContainer.values для доступа к параметрам в контейнере roamingSettings
, полученном на предыдущем шаге. В следующем примере создается параметр exampleSetting
и параметр HighPriority
, который лучше всего подходит для передачи срочной информации, например информации о состоянии приложения.
// Simple setting
roamingSettings.values["exampleSetting"] = "Hello World";
// High Priority setting, for example, last page position in book reader app
roamingSettings.values["HighPriority"] = "65";
Объект ApplicationDataCompositeValue содержит параметры, доступ к которым должен быть автоматическим. В следующем примере составной параметр с именем exampleCompositeSetting
создается и добавляется в контейнер roamingSettings
.
// Composite setting
var composite = new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
roamingSettings.values["exampleCompositeSetting"] = composite;
Вызовите метод ApplicationDataContainer.CreateContainer, чтобы создать контейнер параметров. В следующем примере создается контейнер параметров с именем exampleContainer
и добавляется параметр с именем exampleSetting
. Значение Always из перечисления ApplicationDataCreateDisposition показывает, что если контейнер не существует, он создается.
После изменения параметра в хранилище перемещаемых данных приложения операционная система отправляет событие datachanged.
// Setting in a container
var container = roamingSettings.createContainer("exampleContainer",
Windows.Storage.ApplicationDataCreateDisposition.Always);
if (roamingSettings.containers.hasKey("exampleContainer"))
{
roamingSettings.containers.lookup("exampleContainer").values["exampleSetting"] = "Hello World";
}
Чтение данных из параметра
Используйте свойство ApplicationDataContainer.values для доступа к параметру exampleSetting
в контейнере roamingSettings
.
// Simple setting
var value = roamingSettings.values["exampleSetting"];
if (!value)
{
// No data
}
else
{
// Access data in value
}
Используйте свойство ApplicationDataContainer.values для доступа к параметру exampleCompositeSetting
в контейнере roamingSettings
.
// Composite setting
var composite = roamingSettings.values["exampleCompositeSetting"];
if (!composite)
{
// No data
}
else
{
// Access data in composite["intVal"] and composite["strVal"]
}
Используйте свойство ApplicationDataContainer.values для доступа к параметру exampleSetting
в контейнере exampleContainer
.
// Setting in a container
var hasContainer = roamingSettings.containers.hasKey("exampleContainer");
if (hasContainer)
{
// Access data in roamingSettings.containers.lookup("exampleContainer").values.hasKey("exampleSetting");
}
Запись данных в файл
Для создания и обновления файла в хранилище данных перемещаемого приложения используйте файловые API, такие как Windows.Storage.StorageFolder.createFileAsync и Windows.Storage.FileIO.writeTextAsync. В следующем примере создается файл с именем dataFile.txt
в контейнере roamingFolder
и в этот файл записываются текущие дата и время. Значение replaceExisting из перечисления CreationCollisionOption показывает, что если файл уже существует, его следует заменить.
function writeTimestamp() {
roamingFolder.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
, созданный на предыдущем шаге, и из него считывается дата. Значение openIfExists из перечисления CreationCollisionOption показывает, что файл должен существовать. Дополнительные сведения о загрузке файловых ресурсов из различных расположений см. в разделе Загрузка файловых ресурсов.
function readTimestamp() {
roamingFolder.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
из контейнера roamingSettings
по завершении его использования.
// Simple setting
roamingSettings.values.remove("exampleSetting");
Вызовите метод ApplicationDataCompositeValue.remove для удаления составного параметра exampleCompositeSetting
из контейнера roamingSettings
по завершении его использования.
// Delete composite setting
roamingSettings.values.remove("exampleCompositeSetting");
Вызовите метод ApplicationDataContainer.deleteContainer для удаления контейнера параметров exampleContainer
по завершении его использования.
// Delete container
roamingSettings.deleteContainer("exampleContainer");
Замечания
Каждое приложение имеет квоту на перемещаемые данные. Чтобы узнать общий разрешенный размер перемещаемых данных, проверьте свойство ApplicationData.roamingStorageQuota. Если объем перемещаемых данных превышает квоту, данные не будут перемещаться до тех пор, пока их размер снова не станет меньше квоты.
Связанные разделы
Задача
Краткое руководство: локальные данные приложения
Краткое руководство: временные данные приложения
Понятия
Доступ к данным приложения с помощью среды выполнения Windows
Рекомендации
Руководство по перемещению данных приложения
Ссылки
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
Примеры