Linguaggio: HTML | XAML

Guida introduttiva: Dati locali dell'app (XAML)

Applies to Windows and Windows Phone

Scopri come archiviare e recuperare impostazioni e file dall'archivio dei dati locali dell'app.

Roadmap: che relazione c'è tra questo argomento e gli altri? Vedi:

Recuperare i contenitori per le impostazioni e i file dell'app

Usa la proprietà ApplicationData.LocalSettings per recuperare le impostazioni in un oggetto ApplicationDataContainer. Usa la proprietà ApplicationData.LocalFolder per recuperare i file in un oggetto StorageFolder.


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

Le prossime sezioni usano le variabili localSettings e localFolder di questa sezione.

Scrivere dati in un'impostazione

Usa la proprietà ApplicationDataContainer.Values per accedere alle impostazioni nel contenitore localSettings recuperato nel passaggio precedente. Questo esempio crea un'impostazione denominata exampleSetting.


// Simple setting

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

Un oggetto ApplicationDataCompositeValue contiene le impostazioni a cui è necessario accedere in modo atomico. Questo esempio crea un'impostazione composita denominata exampleCompositeSetting e la aggiunge al contenitore 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);

Chiama il metodo ApplicationDataContainer.CreateContainer per creare un contenitore di impostazioni. Questo esempio crea un contenitore di impostazioni denominato exampleContainer e aggiunge un'impostazione denominata exampleSetting. Il valore Always dall'enumerazione ApplicationDataCreateDisposition indica che il contenitore deve essere creato se non esiste già.


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

Leggere dati da un'impostazione

Usa la proprietà ApplicationDataContainer.Values per accedere all'impostazione exampleSetting nel contenitore localSettings.


// Simple setting

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

Usa la proprietà ApplicationDataContainer.Values per accedere all'impostazione exampleCompositeSetting nel contenitore 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"));
}

Usa la proprietà ApplicationDataContainer.Values per accedere all'impostazione exampleSetting nel contenitore 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");
}

Scrivere dati in un file

Usa le API per i file, come Windows.Storage.StorageFolder.CreateFileAsync e Windows.Storage.FileIO.WriteTextAsync, per creare e aggiornare un file nell'archivio dei dati locali dell'app. Questo esempio crea un file denominato dataFile.txt nel contenitore localFolder e scrive la data e l'ora correnti nel file. Il valore ReplaceExisting dall'enumerazione CreationCollisionOption indica che il file deve essere sostituito se già esistente.

  • Applies to Windows Phone

Nei dispositivi Windows Phone, il backup dei dati delle app viene eseguito per impostazione predefinita. Se non vuoi eseguire il backup di un file, salvalo nella sottocartella LocalCache della risorsa di archiviazione locale dell'app.


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

Leggere dati da un file

Usa le API per i file, come Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync e Windows.Storage.FileIO.ReadTextAsync, per aprire e leggere un file nell'archivio dei dati locali dell'app. Questo esempio apre il file dataFile.txt creato nel passaggio precedente e legge la data dal file. Per altri dettagli sul caricamento di risorse di tipo file da varie posizioni, vedi Come caricare risorse di tipo file.


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

Eliminare le impostazioni al termine

Chiama il metodo ApplicationDataContainerSettings.Remove per eliminare l'impostazione exampleSetting quando hai finito di usarla.


// Delete simple setting

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

Chiama il metodo ApplicationDataCompositeValue.Remove per eliminare l'impostazione composita exampleCompositeSetting quando hai finito di usarla.


// Delete composite setting

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

Chiama il metodo ApplicationDataContainer.DeleteContainer per eliminare il contenitore delle impostazioni exampleContainer quando hai finito di usarlo.


// Delete container

localSettings->DeleteContainer("exampleContainer");

Argomenti correlati

Attività
Come caricare risorse di tipo file
Guida introduttiva: Dati mobili dell'app
Guida introduttiva: Dati temporanei dell'app
Informazioni concettuali
Accesso ai dati dell'app con Windows Runtime
Riferimento
Windows.Storage.ApplicationData
Windows.Storage.ApplicationDataCompositeValue
Windows.Storage.ApplicationDataContainer
Windows.Storage.ApplicationDataContainerSettings
Esempi
Esempio di dati dell'applicazione

 

 

Mostra:
© 2014 Microsoft