言語: HTML | XAML

クイック スタート: ローカル アプリ データ (XAML)

Applies to Windows and Windows Phone

ローカル アプリ データ ストアからのファイルと設定の保存方法と取得方法について説明します。

ロードマップ: このトピックと他のトピックとの関連については、以下をご覧ください。

アプリの設定とファイルのコンテナーを取得する

ApplicationDataContainer オブジェクト内の設定を取得するには、ApplicationData.LocalSettings プロパティを使います。StorageFolder オブジェクト内のファイルを取得するには、ApplicationData.LocalFolder プロパティを使います。


ApplicationDataContainer^ localSettings = ApplicationData::Current->LocalSettings;
StorageFolder^ localFolder = ApplicationData::Current->LocalFolder;

以降のセクションでは、このセクションの localSettings 変数と localFolder 変数を使います。

データを設定に書き込む

前の手順で取得した localSettings コンテナー内の設定にアクセスするには、ApplicationDataContainer.Values プロパティを使います。次の例では、exampleSetting という名前の設定を作成します。


// Simple setting

auto values = localSettings->Values;
values->Insert("exampleSetting", dynamic_cast<PropertyValue^>(PropertyValue::CreateString("Hello Windows")));

ApplicationDataCompositeValue オブジェクトには、アトミックにアクセスする必要がある設定が含まれています。次の例では、exampleCompositeSetting という名前のコンポジット設定を作成し、localSettings コンテナーに追加します。


// Composite setting

ApplicationDataCompositeValue^ composite = ref new ApplicationDataCompositeValue();
composite->Insert("intVal", dynamic_cast<PropertyValue^>(PropertyValue::CreateInt32(1)));
composite->Insert("strVal", dynamic_cast<PropertyValue^>(PropertyValue::CreateString("string")));

auto values = localSettings->Values;
values->Insert("exampleCompositeSetting", composite);

ApplicationDataContainer.CreateContainer メソッドを呼び出し、設定コンテナーを作成します。次の例では、exampleContainer という名前の設定コンテナーを作成し、exampleSetting という名前の設定を追加します。ApplicationDataCreateDisposition 列挙体の Always 値は、コンテナーがまだない場合に作成されることを示します。


// Setting in a container

ApplicationDataContainer^ container = 
   localSettings->CreateContainer("exampleContainer", ApplicationDataCreateDisposition::Always);

if (localSettings->Containers->HasKey("exampleContainer"))
{
   auto values = localSettings->Containers->Lookup("exampleContainer")->Values;
   values->Insert("exampleSetting", "Hello Windows");
}

データを設定から読み取る

localSettings コンテナー内の exampleSetting 設定にアクセスするには、ApplicationDataContainer.Values プロパティを使います。


// Simple setting

auto values = localSettings->Values;
String^ value = safe_cast<String^>(localSettings->Values->Lookup("exampleSetting"));

localSettings コンテナー内の exampleCompositeSetting 設定にアクセスするには、ApplicationDataContainer.Values プロパティを使います。


// Composite setting

ApplicationDataCompositeValue^ composite = 
   safe_cast<ApplicationDataCompositeValue^>(localSettings->Values->Lookup("exampleCompositeSetting"));

if (composite == nullptr)
{
   // No data
}
else
{
   int one = safe_cast<IPropertyValue^>(composite->Lookup("intVal"))->GetInt32();
   String^ hello = safe_cast<String^>(composite->Lookup("strVal"));
}

exampleContainer コンテナー内の exampleSetting 設定にアクセスするには、ApplicationDataContainer.Values プロパティを使います。


// Setting in a container

bool hasContainer = localSettings->Containers->HasKey("exampleContainer");
bool hasSetting = false;

if (hasContainer)
{
   auto values = localSettings->Containers->Lookup("exampleContainer")->Values;
   hasSetting = values->HasKey("exampleSetting");
}

データをファイルに書き込む

ローカル アプリ データ ストアにファイルを作って更新するには、Windows.Storage.StorageFolder.CreateFileAsyncWindows.Storage.FileIO.WriteTextAsync などのファイル API を使います。次の例では、localFolder コンテナーに dataFile.txt という名前のファイルを作り、現在の日付と時刻をファイルに書き込みます。CreationCollisionOption 列挙体の ReplaceExisting 値は、ファイルが既にある場合にファイルを置き換えることを示します。

  • Applies to Windows Phone

Windows Phone デバイスでは、アプリのデータは既定でバックアップされます。ファイルをバックアップする必要がない場合は、アプリのローカル記憶域にある LocalCache サブフォルダーに保存してください。


void MainPage::WriteTimestamp()
{
   concurrency::task<StorageFile^> fileOperation = 
       localFolder->CreateFileAsync("dataFile.txt", CreateCollisionOption::ReplaceExisting);
   fileOperation.then([this](StorageFile^ sampleFile)
   {
      auto calendar = ref new Calendar;
      auto now = calendar->ToDateTime();
      auto formatter = ref new Windows::Globalization::DateTimeFormatting::DateTimeFormatter("longtime");

      return FileIO::WriteTextAsync(sampleFile, formatter->Format(now));
   }).then([this](task<void> previousOperation) {
      try {
         previousOperation.get();
      } catch (Platform::Exception^) {
         // Timestamp not written
      }
   });
}

データをファイルから読み取る

ローカル アプリ データ ストアのファイルを開いて読み取るには、Windows.Storage.StorageFolder.GetFileAsyncWindows.Storage.StorageFile.GetFileFromApplicationUriAsyncWindows.Storage.FileIO.ReadTextAsync などのファイル API を使います。この例では、前の手順で作成した dataFile.txt ファイルを開き、ファイルから日付を読み取ります。さまざまな場所からファイル リソースを読み込む方法について詳しくは、「ファイル リソースを読み込む方法」をご覧ください。


void MainPage::ReadTimestamp()
{
   concurrency::task<StorageFile^> getFileOperation(localFolder->GetFileAsync("dataFile.txt"));
   getFileOperation.then([this](StorageFile^ file)
   {
      return FileIO::ReadTextAsync(file);
   }).then([this](concurrency::task<String^> previousOperation) {
      String^ timestamp;
 
      try {
         // Data is contained in timestamp
         timestamp = previousOperation.get();
      } catch (...) {
         // Timestamp not found
      }
   });
}

完了した設定を削除する

exampleSetting 設定の操作が完了したら、ApplicationDataContainerSettings.Remove メソッドを呼び出して設定を削除します。


// Delete simple setting

auto values = localSettings->Values;
values->Remove("exampleSetting");

exampleCompositeSetting コンポジット設定の操作が完了したら、ApplicationDataCompositeValue.Remove メソッドを呼び出してコンポジット設定を削除します。


// Delete composite setting

auto values = localSettings->Values;
values->Remove("exampleCompositeSetting");

exampleContainer 設定コンテナーの操作が完了したら、ApplicationDataContainer.DeleteContainer メソッドを呼び出して設定コンテナーを削除します。


// Delete container

localSettings->DeleteContainer("exampleContainer");

関連トピック

タスク
ファイル リソースを読み込む方法
クイック スタート: アプリ データのローミング
クイックスタート: 一時アプリ データ
概念
Windows ランタイムを使ったアプリ データへのアクセス
辞書/リファレンス
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
サンプル
アプリケーション データ サンプルに関するページ

 

 

表示:
© 2014 Microsoft