Udostępnij przez


Przechowywanie i pobieranie ustawień oraz innych danych aplikacji

Dane aplikacji to dane modyfikowalne, które są tworzone i zarządzane przez określoną aplikację. Obejmuje stan środowiska uruchomieniowego, ustawienia aplikacji, preferencje użytkownika, zawartość referencyjną (taką jak definicje słownika w aplikacji słownika) i inne ustawienia. Dane aplikacji różnią się od danych użytkownika, danych tworzonych przez użytkownika i zarządzanych podczas korzystania z aplikacji. Dane użytkownika obejmują pliki dokumentów lub multimediów, transkrypcje poczty e-mail lub komunikacji albo rekordy bazy danych zawierające zawartość utworzoną przez użytkownika. Dane użytkownika mogą być przydatne lub istotne dla więcej niż jednej aplikacji. Często są to dane, które użytkownik chce manipulować lub przesyłać jako jednostkę niezależną od samej aplikacji, na przykład dokument.

Ważna uwaga dotycząca danych aplikacji: Okres istnienia danych aplikacji jest powiązany z okresem istnienia aplikacji. Jeśli aplikacja zostanie usunięta, wszystkie dane aplikacji zostaną utracone w konsekwencji. Nie używaj danych aplikacji do przechowywania danych użytkownika ani żadnych elementów, które użytkownicy mogą postrzegać jako cenne i niezastąpione. Zalecamy, aby biblioteki użytkownika i usługa Microsoft OneDrive były używane do przechowywania tego rodzaju informacji. Dane aplikacji idealnie nadają się do przechowywania preferencji użytkownika, ustawień i ulubionych specyficznych dla aplikacji.

Typy danych aplikacji

Istnieją dwa typy danych aplikacji: ustawienia i pliki.

Ustawienia

Użyj ustawień do przechowywania preferencji użytkownika i informacji o stanie aplikacji. Interfejs API danych aplikacji umożliwia łatwe tworzenie i pobieranie ustawień (w dalszej części tego artykułu przedstawiono kilka przykładów).

Poniżej przedstawiono typy danych, których można użyć dla ustawień aplikacji:

  • UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double
  • Boolowski
  • Char16, Ciąg
  • DataGodzina, PrzedziałCzasu
  • identyfikator GUID, punkt, rozmiar, prostokąt
  • ApplicationDataCompositeValue: zestaw powiązanych ustawień aplikacji, które muszą być serializowane i deserializowane atomowo. Użyj ustawień złożonych, aby łatwo obsługiwać atomowe aktualizacje ustawień wzajemnie zależnych. System zapewnia integralność ustawień złożonych podczas współbieżnego dostępu i roamingu. Ustawienia złożone są zoptymalizowane pod kątem małych ilości danych, a wydajność może być niska, jeśli używasz ich do dużych zestawów danych.

Pliki

Użyj plików do przechowywania danych binarnych lub w celu włączenia własnych, dostosowanych typów serializowanych.

Przechowywanie danych aplikacji w magazynach danych aplikacji

Po zainstalowaniu aplikacji system udostępnia dedykowane dla każdego użytkownika magazyny danych na ustawienia i pliki. Nie musisz wiedzieć, gdzie lub jak istnieją te dane, ponieważ system jest odpowiedzialny za zarządzanie magazynem fizycznym, zapewniając, że dane są odizolowane od innych aplikacji i innych użytkowników. System zachowuje również zawartość tych magazynów danych, gdy użytkownik instaluje aktualizację aplikacji i usuwa zawartość tych magazynów danych całkowicie i czysto po odinstalowaniu aplikacji.

W magazynie danych aplikacji każda aplikacja ma katalogi główne zdefiniowane przez system: jeden dla plików lokalnych, jeden dla plików mobilnych i jeden dla plików tymczasowych. Aplikacja może dodawać nowe pliki i nowe kontenery do każdego z tych katalogów głównych.

Dane aplikacji lokalnej

Dane aplikacji lokalnych powinny być używane dla wszelkich informacji, które należy zachować między sesjami aplikacji i nie są odpowiednie dla danych aplikacji mobilnych. Dane, które nie mają zastosowania na innych urządzeniach, również powinny być przechowywane w tym miejscu. Nie ma ogólnego ograniczenia rozmiaru dla przechowywanych danych lokalnych. Użyj lokalnego magazynu danych aplikacji dla danych, których nie ma sensu synchronizować lub w przypadku dużych zestawów danych.

Pobierz lokalny magazyn danych aplikacji

Aby móc odczytywać lub zapisywać dane aplikacji lokalnej, musisz pobrać lokalny magazyn danych aplikacji. Aby pobrać lokalny magazyn danych aplikacji, użyj właściwości ApplicationData.LocalSettings , aby pobrać ustawienia lokalne aplikacji jako obiekt ApplicationDataContainer . Użyj właściwości ApplicationData.LocalFolder , aby pobrać pliki w obiekcie StorageFolder . Użyj właściwości ApplicationData.LocalCacheFolder , aby pobrać folder w lokalnym magazynie danych aplikacji, w którym można zapisywać pliki, które nie są uwzględniane w kopii zapasowej i przywracaniu.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

Tworzenie i pobieranie prostego ustawienia lokalnego

Aby utworzyć lub napisać ustawienie, użyj właściwości ApplicationDataContainer.Values , aby uzyskać dostęp do ustawień w localSettings kontenerze, który uzyskaliśmy w poprzednim kroku. W tym przykładzie zostanie utworzone ustawienie o nazwie exampleSetting.

// Simple setting

localSettings.Values["exampleSetting"] = "Hello Windows";

Aby pobrać to ustawienie, użyj tej samej właściwości ApplicationDataContainer.Values użytej do utworzenia ustawienia. W tym przykładzie pokazano, jak pobrać właśnie utworzone ustawienie.

// Simple setting
Object value = localSettings.Values["exampleSetting"];

Tworzenie i pobieranie lokalnej wartości złożonej

Aby utworzyć lub zapisać wartość złożoną, utwórz obiekt ApplicationDataCompositeValue . W tym przykładzie tworzone jest ustawienie złożone o nazwie exampleCompositeSetting i dodaje je do kontenera localSettings .

// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
    new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

localSettings.Values["exampleCompositeSetting"] = composite;

W tym przykładzie pokazano, jak pobrać właśnie utworzoną wartość złożoną.

// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
   (Windows.Storage.ApplicationDataCompositeValue)localSettings.Values["exampleCompositeSetting"];

if (composite == null)
{
   // No data
}
else
{
   // Access data in composite["intVal"] and composite["strVal"]
}

Tworzenie i odczytywanie pliku lokalnego

Aby utworzyć i zaktualizować plik w lokalnym magazynie danych aplikacji, użyj interfejsów API plików, takich jak Windows.Storage.StorageFolder.CreateFileAsync i Windows.Storage.FileIO.WriteTextAsync. W tym przykładzie tworzony jest plik o nazwie dataFile.txt w kontenerze localFolder i zapisuje bieżącą datę i godzinę w pliku. Wartość ReplaceExisting z wyliczenia CreationCollisionOption wskazuje, że plik należy zastąpić, jeśli już istnieje.

async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
       new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await localFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}

Aby otworzyć i odczytać plik w lokalnym magazynie danych aplikacji, użyj interfejsów API plików, takich jak Windows.Storage.StorageFolder.GetFileAsync, Windows.StorageFile.GetFile.GetFileFromApplicationUriAsync i Windows.Storage.FileIO.ReadTextAsync. W tym przykładzie plik dataFile.txt utworzony w poprzednim kroku zostanie otwarty, a data z niego odczytana. Aby uzyskać szczegółowe informacje na temat ładowania zasobów plików z różnych lokalizacji, zobacz Jak załadować zasoby plików.

async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await localFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}

Dane w roamingu

Ostrzeżenie

Dane i ustawienia roamingu nie są już obsługiwane systemu Windows 11. Zalecanym zamiennikiem dla usługi Azure App Servicejest . Usługa Azure App Service jest powszechnie obsługiwana, dobrze udokumentowana, niezawodna i obsługuje scenariusze międzyplatformowe/między ekosystemami, takie jak iOS, Android i internet.

Poniższa dokumentacja dotyczy systemu Windows 10 w wersji 1909 i starszych.

Jeśli używasz danych w roamingu w aplikacji, użytkownicy mogą łatwo synchronizować dane aplikacji na wielu urządzeniach. Jeśli użytkownik instaluje aplikację na wielu urządzeniach, system operacyjny przechowuje dane aplikacji w synchronizacji, zmniejszając ilość pracy konfiguracji, którą użytkownik musi wykonać dla aplikacji na drugim urządzeniu. Roaming umożliwia również użytkownikom kontynuowanie zadania, takiego jak tworzenie listy, dokładnie tam, gdzie skończyli, nawet na innym urządzeniu. System operacyjny replikuje dane roamingu do chmury po jej zaktualizowaniu i synchronizuje dane z innymi urządzeniami, na których zainstalowano aplikację.

System operacyjny ogranicza rozmiar danych aplikacji, które mogą być przenoszone przez każdą aplikację. Proszę sprawdzić ApplicationData.RoamingStorageQuota. Jeśli aplikacja osiągnie ten limit, żadne z danych aplikacji nie zostanie zreplikowane do chmury, dopóki łączna liczba danych aplikacji nie będzie mniejsza niż limit. Z tego powodu najlepszym rozwiązaniem jest używanie danych mobilnych tylko w przypadku preferencji użytkownika, linków i małych plików danych.

Dane roamingu dla aplikacji są dostępne w chmurze, o ile użytkownik uzyskuje do niego dostęp z określonego urządzenia w wymaganym przedziale czasu. Jeśli użytkownik nie uruchamia aplikacji przez dłuższy niż ten interwał czasu, jego dane roamingu zostaną usunięte z chmury. Jeśli użytkownik odinstaluje aplikację, jej dane roamingu nie zostaną automatycznie usunięte z chmury, zostaną zachowane. Jeśli użytkownik ponownie zainstaluje aplikację w przedziale czasu, dane roamingu są synchronizowane z chmury.

Co robić i czego unikać z danymi roamingowymi

Zobacz ważną uwagę na temat danych roamingowych .

  • Użyj roamingu dla preferencji i dostosowań użytkownika, linków i małych plików danych. Na przykład użyj roamingu, aby zachować preferencje dotyczące koloru tła użytkownika na wszystkich urządzeniach.
  • Użyj roamingu, aby umożliwić użytkownikom kontynuowanie zadania między urządzeniami. Na przykład wędruj dane aplikacji, takie jak zawartość roboczej wiadomości e-mail lub ostatnio wyświetlona strona w aplikacji czytelnika.
  • Zajmij się zdarzeniem DataChanged, aktualizując dane aplikacji. To zdarzenie występuje, gdy dane aplikacji właśnie zakończyły synchronizację z chmury.
  • Odwołania dotyczą zawartości, a nie surowych danych. Na przykład przeglądaj adres URL zamiast zawartość artykułu online.
  • Dla ważnych czasowo krytycznych ustawień użyj ustawienia HighPriority skojarzonego z RoamingSettings.
  • Nie synchronizuj danych aplikacji, które są specyficzne dla urządzenia. Niektóre informacje są istotne tylko lokalnie, takie jak nazwa ścieżki do lokalnego zasobu pliku. Jeśli zdecydujesz się uzyskać dostęp do lokalnych informacji, upewnij się, że aplikacja może sobie poradzić, jeśli informacje nie są prawidłowe na urządzeniu dodatkowym.
  • Nie przeglądaj dużych zestawów danych aplikacji. Istnieje limit ilości danych aplikacji, które mogą być synchronizowane między urządzeniami; użyj właściwości RoamingStorageQuota, aby uzyskać tę maksymalną wartość. Jeśli aplikacja osiągnie ten limit, żadne dane nie będą mogły być synchronizowane do momentu, gdy rozmiar magazynu danych aplikacji nie będzie przekraczać tego limitu. Podczas projektowania aplikacji zastanów się, jak nałożyć ograniczenie na większe dane, aby nie przekraczać limitu. Jeśli na przykład zapisywanie stanu gry wymaga 10 KB, aplikacja może zezwalać tylko na przechowywanie maksymalnie 10 gier.
  • Nie używaj roamingu dla danych, które opierają się na natychmiastowej synchronizacji. System Windows nie gwarantuje natychmiastowej synchronizacji; roaming może być znacznie opóźniony, jeśli użytkownik jest w trybie offline lub w sieci o dużym opóźnieniu. Upewnij się, że interfejs użytkownika nie zależy od natychmiastowej synchronizacji.
  • Nie używaj roamingu do częstego zmieniania danych. Jeśli na przykład aplikacja śledzi często zmieniające się informacje, takie jak pozycja w piosence co sekundę, nie przechowuj ich jako danych aplikacji w roamingu. Zamiast tego wybierz rzadziej spotykane przedstawienie, które nadal zapewnia dobrą jakość korzystania, np. aktualnie odtwarzana piosenka.

Wymagania wstępne dotyczące roamingu

Zobacz ważną uwagę na temat danych roamingowych .

Każdy użytkownik może korzystać z danych aplikacji roamingowej, jeśli używa konta Microsoft do logowania się na swoim urządzeniu. Jednak użytkownicy i administratorzy zasad grupy mogą w dowolnym momencie wyłączyć dane aplikacji w roamingu na urządzeniu. Jeśli użytkownik zdecyduje się nie używać konta Microsoft lub wyłącza możliwości roamingu danych, nadal będzie mógł korzystać z aplikacji, ale dane aplikacji będą lokalne dla każdego urządzenia.

Dane przechowywane w PasswordVault będą przenoszone tylko wtedy, gdy użytkownik utworzył urządzenie jako "zaufane". Jeśli urządzenie nie jest zaufane, dane zabezpieczone w tym magazynie nie będą wędrować.

Rozwiązywanie konfliktów

Zobacz ważną uwagę na temat danych roamingowych .

Dane aplikacji roaming nie są przeznaczone do użycia na więcej niż jednym urządzeniu jednocześnie. Jeśli podczas synchronizacji wystąpi konflikt, ponieważ określona jednostka danych została zmieniona na dwóch urządzeniach, system zawsze będzie faworyzował wartość, która została zapisana jako ostatnia. Gwarantuje to, że aplikacja korzysta z najbardziej up-to-date informacji. Jeśli jednostka danych jest kompozytem ustawień, rozwiązywanie konfliktów będzie rozwiązywane na poziomie jednostki ustawień, co oznacza, że kompozyt z najnowszą zmianą zostanie zsynchronizowany.

Kiedy zapisywać dane

Zobacz ważną uwagę na temat danych roamingowych .

W zależności od oczekiwanego okresu istnienia ustawienia dane powinny być zapisywane w różnych godzinach. Często lub wolno zmieniające się dane aplikacji powinny być zapisywane natychmiast. Jednak dane aplikacji, które często zmieniają się, powinny być zapisywane okresowo tylko w regularnych odstępach czasu (np. raz na 5 minut), a także po zawieszeniu aplikacji. Na przykład aplikacja muzyczna może zapisywać ustawienia "obecna piosenka" za każdym razem, gdy nowa piosenka zacznie być odtwarzana, jednak rzeczywista pozycja w utworze powinna być zapisana tylko podczas zawieszenia.

Nadmierna ochrona użycia

Zobacz ważną uwagę na temat danych roamingowych .

System ma różne mechanizmy ochrony, aby uniknąć nieodpowiedniego wykorzystania zasobów. Jeśli dane aplikacji nie są przenoszone zgodnie z oczekiwaniami, prawdopodobnie urządzenie zostało tymczasowo ograniczone. Oczekiwanie na jakiś czas zwykle automatycznie rozwiąże tę sytuację i nie jest wymagana żadna akcja.

Wersjonowanie

Zobacz ważną uwagę na temat danych roamingowych .

Dane aplikacji mogą korzystać z wersjonowania, aby zmienić strukturę danych z jednej na inną. Numer wersji różni się od wersji aplikacji i można go ustawić. Mimo że nie jest wymuszana, zdecydowanie zaleca się użycie rosnącej liczby wersji, ponieważ niepożądane komplikacje (w tym utrata danych) mogą wystąpić, jeśli spróbujesz przejść do niższego numeru wersji danych, który reprezentuje nowsze dane.

Dane aplikacji są przenoszone tylko między zainstalowanymi aplikacjami o tym samym numerze wersji. Na przykład, urządzenia w wersji 2 będą przenosić dane między sobą, a urządzenia w wersji 3 będą robić to samo, jednakże między urządzeniem z wersją 2 a urządzeniem działającym na wersji 3 nie będzie dochodziło do roamingu. Jeśli zainstalujesz nową aplikację, która korzysta z różnych numerów wersji na innych urządzeniach, nowo zainstalowana aplikacja zsynchronizuje dane aplikacji skojarzone z najwyższym numerem wersji.

Testowanie i narzędzia

Zobacz ważną uwagę na temat danych roamingowych .

Deweloperzy mogą zablokować swoje urządzenie, aby uruchomić synchronizację danych aplikacji w roamingu. Jeśli wydaje się, że dane aplikacji nie są przenoszone w określonym przedziale czasu, sprawdź następujące elementy i upewnij się, że:

  • Dane roamingu nie przekraczają maksymalnego rozmiaru (zobacz RoamingStorageQuota , aby uzyskać szczegółowe informacje).
  • Pliki są zamykane i zwalniane prawidłowo.
  • Istnieją co najmniej dwa urządzenia z tą samą wersją aplikacji.

Zarejestruj się, aby otrzymywać powiadomienia w przypadku zmiany danych mobilnych

Zobacz ważną uwagę na temat danych roamingowych .

Aby korzystać z danych aplikacji mobilnych, musisz zarejestrować się w celu wprowadzenia zmian danych mobilnych i pobrać kontenery danych mobilnych, aby można było odczytywać i zapisywać ustawienia.

  1. Zarejestruj się, aby otrzymywać powiadomienia w przypadku zmiany danych mobilnych.

    Zdarzenie DataChanged powiadamia, gdy zmieniają się dane roamingowe. W tym przykładzie ustawia DataChangeHandler jako obsługę zmian danych w roamingu.

void InitHandlers()
    {
       Windows.Storage.ApplicationData.Current.DataChanged += 
          new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
    }

    void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
    {
       // TODO: Refresh your data
    }
  1. Pobierz kontenery dla ustawień i plików aplikacji.

    Użyj właściwości ApplicationData.RoamingSettings , aby pobrać ustawienia i właściwość ApplicationData.RoamingFolder w celu pobrania plików.

Windows.Storage.ApplicationDataContainer roamingSettings = 
        Windows.Storage.ApplicationData.Current.RoamingSettings;
    Windows.Storage.StorageFolder roamingFolder = 
        Windows.Storage.ApplicationData.Current.RoamingFolder;

Tworzenie i pobieranie ustawień roamingu

Zobacz ważną uwagę na temat danych roamingowych .

Użyj właściwości ApplicationDataContainer.Values , aby uzyskać dostęp do ustawień w kontenerze roamingSettings , który uzyskaliśmy w poprzedniej sekcji. W tym przykładzie utworzono proste ustawienie o nazwie exampleSetting i wartość złożoną o nazwie composite.

// Simple setting

roamingSettings.Values["exampleSetting"] = "Hello World";
// High Priority setting, for example, last page position in book reader app
roamingSettings.values["HighPriority"] = "65";

// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
    new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";

roamingSettings.Values["exampleCompositeSetting"] = composite;

W tym przykładzie pobieramy właśnie utworzone ustawienia.

// Simple setting

Object value = roamingSettings.Values["exampleSetting"];

// Composite setting

Windows.Storage.ApplicationDataCompositeValue composite = 
   (Windows.Storage.ApplicationDataCompositeValue)roamingSettings.Values["exampleCompositeSetting"];

if (composite == null)
{
   // No data
}
else
{
   // Access data in composite["intVal"] and composite["strVal"]
}

Tworzenie i pobieranie plików wędrujących

Zobacz ważną uwagę na temat danych roamingowych .

Aby utworzyć i zaktualizować plik w magazynie danych aplikacji mobilnych, użyj interfejsów API plików, takich jak Windows.Storage.StorageFolder.CreateFileAsync i Windows.Storage.FileIO.WriteTextAsync. W tym przykładzie tworzony jest plik o nazwie dataFile.txt w kontenerze roamingFolder i zapisuje bieżącą datę i godzinę w pliku. Wartość ReplaceExisting z wyliczenia CreationCollisionOption wskazuje, że plik należy zastąpić, jeśli już istnieje.

async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
       new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await roamingFolder.CreateFileAsync("dataFile.txt", 
       CreationCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}

Aby otworzyć i odczytać plik w magazynie danych aplikacji roamingowych, użyj interfejsów API do obsługi plików, takich jak Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsynci Windows.Storage.FileIO.ReadTextAsync. W tym przykładzie zostanie otwarty plik dataFile.txt utworzony w poprzedniej sekcji, a data zostanie odczytana z pliku. Aby uzyskać szczegółowe informacje na temat ładowania zasobów plików z różnych lokalizacji, zobacz Jak załadować zasoby plików.

async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await roamingFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}

Tymczasowe dane aplikacji

Tymczasowy magazyn danych aplikacji działa jak pamięć podręczna. Jego pliki nie wędrują i można je usunąć w dowolnym momencie. Zadanie Konserwacji systemu może automatycznie usuwać dane przechowywane w tej lokalizacji w dowolnym momencie. Użytkownik może również wyczyścić pliki z tymczasowego magazynu danych przy użyciu oczyszczania dysku. Tymczasowe dane aplikacji mogą służyć do przechowywania informacji tymczasowych podczas sesji aplikacji. Nie ma gwarancji, że te dane będą utrwalane poza końcem sesji aplikacji, ponieważ system może odzyskać używane miejsce w razie potrzeby. Lokalizacja jest dostępna za pośrednictwem właściwości "temporaryFolder".

Pobieranie kontenera danych tymczasowych

Użyj właściwości ApplicationData.TemporaryFolder , aby pobrać pliki. W następnych krokach użyj zmiennej temporaryFolder z tego kroku.

Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;

Tworzenie i odczytywanie plików tymczasowych

Aby utworzyć i zaktualizować plik w tymczasowym magazynie danych aplikacji, użyj interfejsów API plików, takich jak Windows.Storage.StorageFolder.CreateFileAsync i Windows.Storage.FileIO.WriteTextAsync. W tym przykładzie tworzony jest plik o nazwie dataFile.txt w kontenerze temporaryFolder i zapisuje bieżącą datę i godzinę w pliku. Wartość ReplaceExisting z wyliczenia CreationCollisionOption wskazuje, że plik należy zastąpić, jeśli już istnieje.

async void WriteTimestamp()
{
   Windows.Globalization.DateTimeFormatting.DateTimeFormatter formatter = 
       new Windows.Globalization.DateTimeFormatting.DateTimeFormatter("longtime");

   StorageFile sampleFile = await temporaryFolder.CreateFileAsync("dataFile.txt", 
       CreateCollisionOption.ReplaceExisting);
   await FileIO.WriteTextAsync(sampleFile, formatter.Format(DateTimeOffset.Now));
}

Aby otworzyć i odczytać plik w tymczasowym magazynie danych aplikacji, użyj interfejsów API plików, takich jak Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync i Windows.Storage.FileIO.ReadTextAsync. W tym przykładzie plik dataFile.txt utworzony w poprzednim kroku zostanie otwarty, a data z niego odczytana. Aby uzyskać szczegółowe informacje na temat ładowania zasobów plików z różnych lokalizacji, zobacz Jak załadować zasoby plików.

async void ReadTimestamp()
{
   try
   {
      StorageFile sampleFile = await temporaryFolder.GetFileAsync("dataFile.txt");
      String timestamp = await FileIO.ReadTextAsync(sampleFile);
      // Data is contained in timestamp
   }
   catch (Exception)
   {
      // Timestamp not found
   }
}

Organizowanie danych aplikacji za pomocą kontenerów

Aby ułatwić organizowanie ustawień i plików danych aplikacji, zamiast bezpośrednio pracować z katalogami, należy tworzyć kontenery (reprezentowane przez obiekty ApplicationDataContainer ). Kontenery można dodawać do magazynów danych aplikacji lokalnych, mobilnych i tymczasowych. Kontenery mogą być zagnieżdżone do 32 poziomów głębokości.

Aby utworzyć kontener ustawień, wywołaj metodę ApplicationDataContainer.CreateContainer . W tym przykładzie tworzony jest kontener ustawień lokalnych o nazwie exampleContainer i dodaje ustawienie o nazwie exampleSetting. Wartość Always z ApplicationDataCreateDisposition wyliczenia wskazuje, że kontener jest tworzony, jeśli jeszcze nie istnieje.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

// Setting in a container
Windows.Storage.ApplicationDataContainer container = 
   localSettings.CreateContainer("exampleContainer", Windows.Storage.ApplicationDataCreateDisposition.Always);

if (localSettings.Containers.ContainsKey("exampleContainer"))
{
   localSettings.Containers["exampleContainer"].Values["exampleSetting"] = "Hello Windows";
}

Usuwanie ustawień aplikacji i kontenerów

Aby usunąć proste ustawienie, którego aplikacja nie potrzebuje, użyj metody ApplicationDataContainerSettings.Remove . W tym przykładzie usunięto exampleSetting utworzone wcześniej ustawienie lokalne.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

// Delete simple setting

localSettings.Values.Remove("exampleSetting");

Aby usunąć ustawienie złożone, użyj metody ApplicationDataCompositeValue.Remove . W tym przykładzie usunięto lokalne exampleCompositeSetting ustawienie złożone utworzone we wcześniejszym przykładzie.

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

// Delete composite setting

localSettings.Values.Remove("exampleCompositeSetting");

Aby usunąć kontener, wywołaj metodę ApplicationDataContainer.DeleteContainer . W tym przykładzie usunięto utworzony wcześniej kontener ustawień lokalnych exampleContainer .

Windows.Storage.ApplicationDataContainer localSettings = 
    Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder = 
    Windows.Storage.ApplicationData.Current.LocalFolder;

// Delete container

localSettings.DeleteContainer("exampleContainer");

Wersjonowanie danych Twojej aplikacji

Możesz opcjonalnie wersjonować dane aplikacji dla swojej aplikacji. Umożliwiłoby to utworzenie przyszłej wersji aplikacji, która zmienia format danych aplikacji bez powodowania problemów ze zgodnością z poprzednią wersją aplikacji. Aplikacja sprawdza wersję danych aplikacji w magazynie danych, a jeśli wersja jest mniejsza niż oczekiwana wersja, aplikacja powinna zaktualizować dane aplikacji do nowego formatu i zaktualizować wersję. Aby uzyskać więcej informacji, zobacz właściwośćApplication.Version i metodę ApplicationData.SetVersionAsync .