クイック スタート: ローミング アプリ データ (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.createFileAsyncWindows.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.getFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.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

サンプル

アプリケーション データ サンプルに関するページ