Idioma: HTML | XAML

Guia de início rápido: dados de aplicativo locais (XAML)

Saiba como armazenar e recuperar configurações e arquivos do repositório local de dados de aplicativo.

Mapa: Como este tópico está relacionado aos outros? Veja:

Obter os contêineres das configurações e dos arquivos do aplicativo

Use a propriedade ApplicationData.LocalSettings para obter as configurações de um objeto ApplicationDataContainer. Use a propriedade ApplicationData.LocalFolder para obter os arquivos de dentro de um objeto StorageFolder.


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

As próximas seções usam as variáveis localSettings e localFolder desta seção.

Gravar dados em uma configuração

Use a propriedade ApplicationDataContainer.Values para acessar as configurações no contêiner localSettings que obtivemos na etapa anterior. Este exemplo cria uma configuração chamada exampleSetting.


// Simple setting

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

Um objeto ApplicationDataCompositeValue contém configurações que devem ser acessadas atomicamente. Este exemplo cria uma definição composta nomeada exampleCompositeSetting e a adiciona ao contêiner 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);

Chame o método ApplicationDataContainer.CreateContainer para criar um contêiner de configurações. Este exemplo cria um contêiner nomeado exampleContainer e adiciona uma configuração nomeada exampleSetting. O valor Always da enumeração de ApplicationDataCreateDisposition indica que o contêiner deve ser criado se ele já não existir.


// 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");
}

Ler dados de uma configuração

Use a propriedade ApplicationDataContainer.Values para acessar a configuração exampleSetting no contêiner localSettings.


// Simple setting

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

Use a propriedade ApplicationDataContainer.Values para acessar a configuração exampleCompositeSetting no contêiner localSettings.


// 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"));
}

Use a propriedade ApplicationDataContainer.Values para acessar a configuração exampleSetting no contêiner exampleContainer.


// 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");
}

Gravar dados em um arquivo

Use as APIs de arquivo, como Windows.Storage.StorageFolder.CreateFileAsync e Windows.Storage.FileIO.WriteTextAsync, para criar e atualizar um arquivo no armazenamento de dados do aplicativo local. Este exemplo cria um arquivo chamado dataFile.txt no contêiner localFolder e escreve a data e hora atual no arquivo. O valor ReplaceExisting da enumeração CreationCollisionOption indica para substituir o arquivo se ele já existir.

Observação  Para aplicativos da Loja do Windows Phone, é feito backup dos dados do aplicativo por padrão. Se não desejar que seja feito backup de um arquivo, salve-o na subpasta LocalCache do armazenamento local do aplicativo.


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
      }
   });
}

Ler dados de um arquivo

Use as APIs de arquivo, como Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync e Windows.Storage.FileIO.ReadTextAsync para abrir e ler um arquivo no repositório local de dados de aplicativo. Este exemplo abre o arquivo dataFile.txt criado na etapa anterior e lê a data do arquivo. Para saber detalhes de como carregar recursos de arquivos de vários locais, veja Como carregar recursos de arquivos.


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
      }
   });
}

Exclua as configurações quando não precisar mais delas

Chame o método ApplicationDataContainerSettings.Remove para excluir a configuração exampleSetting ao concluí-la.


// Delete simple setting

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

Chame o método ApplicationDataCompositeValue.Remove e exclua a configuração composta exampleCompositeSetting quando você não mais precisar dela.


// Delete composite setting

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

Chame o método ApplicationDataContainer.DeleteContainer e exclua o contêiner de configurações exampleContainer quando não precisar mais dele.


// Delete container

localSettings->DeleteContainer("exampleContainer");

Tópicos relacionados

Tarefas
Como carregar recursos de arquivos
Início rápido: dados de aplicativo em roaming
início rápido: dados temporários de aplicativo
Conceitual
Acessando dados de aplicativo com o Tempo de Execução do Windows
Referência
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
Amostras
Exemplo de dados de aplicativos

 

 

Mostrar:
© 2015 Microsoft