クイック スタート: ローミング アプリ データ (HTML)
ローミング アプリ データ ストアからのファイルと設定の保存と取得について説明します。アプリ データ ストアのローミングとその使用理由について詳しくは、「アプリ データのローミング」をご覧ください。
ローミング データが変更された場合に通知を受け取るように登録する
この例では、ローミング データの変更のハンドラーとして 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
変数を使います。
データを設定に書き込む
前の手順で取得した roamingSettings
コンテナー内の設定にアクセスするには、ApplicationDataContainer.values プロパティを使います。次の例では、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
という名前の設定を追加します。ApplicationDataCreateDisposition 列挙体の Always 値は、コンテナーがまだない場合に作成されることを示します。
ローミング アプリ データ ストアの設定が変更されると、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";
}
データを設定から読み取る
roamingSettings
コンテナー内の exampleSetting
設定にアクセスするには、ApplicationDataContainer.values プロパティを使います。
// Simple setting
var value = roamingSettings.values["exampleSetting"];
if (!value)
{
// No data
}
else
{
// Access data in value
}
roamingSettings
コンテナー内の exampleCompositeSetting
設定にアクセスするには、ApplicationDataContainer.values プロパティを使います。
// Composite setting
var composite = roamingSettings.values["exampleCompositeSetting"];
if (!composite)
{
// No data
}
else
{
// Access data in composite["intVal"] and composite["strVal"]
}
exampleContainer
コンテナー内の exampleSetting
設定にアクセスするには、ApplicationDataContainer.values プロパティを使います。
// Setting in a container
var hasContainer = roamingSettings.containers.hasKey("exampleContainer");
if (hasContainer)
{
// Access data in roamingSettings.containers.lookup("exampleContainer").values.hasKey("exampleSetting");
}
データをファイルに書き込む
ローミング アプリ データ ストアにファイルを作って更新するには、Windows.Storage.StorageFolder.createFileAsync や Windows.Storage.FileIO.writeTextAsync などのファイル API を使います。次の例では、roamingFolder
コンテナーに dataFile.txt
という名前のファイルを作り、現在の日付と時刻をファイルに書き込みます。CreationCollisionOption 列挙体の replaceExisting 値は、ファイルが既にある場合にファイルを置き換えることを示します。
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 () {
});
}
データをファイルから読み取る
ローミング アプリ データ ストアのファイルを開いて読み取るには、Windows.Storage.StorageFolder.getFileAsync、Windows.Storage.StorageFile.GetFileFromApplicationUriAsync、Windows.Storage.FileIO.readTextAsync などのファイル API を使います。この例では、前の手順で作成した dataFile.txt
ファイルを開き、ファイルから日付を読み取ります。CreationCollisionOption 列挙体の openIfExists 値は、ファイルが存在する必要があることを示します。さまざまな場所からファイル リソースを読み込む方法について詳しくは、「ファイル リソースを読み込む方法」をご覧ください。
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
});
}
完了した設定を削除する
exampleSetting
設定の操作が完了したら、ApplicationDataContainerSettings.remove メソッドを呼び出してこの設定を roamingSettings
コンテナーから削除します。
// Simple setting
roamingSettings.values.remove("exampleSetting");
exampleCompositeSetting
コンポジット設定の操作が完了したら、ApplicationDataCompositeValue.remove メソッドを呼び出してこのコンポジット設定を roamingSettings
コンテナーから削除します。
// Delete composite setting
roamingSettings.values.remove("exampleCompositeSetting");
exampleContainer
設定コンテナーの操作が完了したら、ApplicationDataContainer.deleteContainer メソッドを呼び出して設定コンテナーを削除します。
// Delete container
roamingSettings.deleteContainer("exampleContainer");
注釈
各アプリには、ローミング アプリ データのクォータがあります。使うことができるローミング データの合計サイズを特定するには、ApplicationData.roamingStorageQuota プロパティを確認します。ローミング データのサイズがクォータを超えると、サイズがクォータ未満に戻るまでデータがローミングされなくなります。
関連トピック
タスク
概念
Windows ランタイムを使ったアプリ データへのアクセス
ガイドライン
辞書/リファレンス
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
サンプル