Speichern und Abrufen von Einstellungen und anderen App-Daten
App-Daten sind änderbare Daten, die von einer bestimmten App erstellt und verwaltet werden. Sie beinhalten den Laufzeitstatus, App-Einstellungen, Benutzereinstellungen, Referenzinhalte (beispielsweise die Wörterbuchdefinitionen in einer Wörterbuch-App) und andere Einstellungen. App-Daten unterscheiden sich von Benutzerdaten, Daten, die der Benutzer bei der Verwendung einer App erstellt und verwaltet. Benutzerdaten umfassen Dokument- oder Mediendateien, E-Mail- oder Kommunikationstranskripte oder Datenbankdatensätze, die inhalte enthalten, die vom Benutzer erstellt wurden. Benutzerdaten können für mehrere Apps nützlich oder sinnvoll sein. Dies sind häufig Daten, die der Benutzer als entitätsunabhängig von der App selbst bearbeiten oder übertragen möchte, z. B. ein Dokument.
Wichtiger Hinweis zu App-Daten: Die Lebensdauer der App-Daten ist an die Lebensdauer der App gebunden. Wenn die App entfernt wird, gehen alle Daten der App verloren. Verwenden Sie App-Daten nicht, um Benutzerdaten oder etwas zu speichern, das Benutzer als wertvoll und unersetzlich wahrnehmen können. Es wird empfohlen, die Bibliotheken des Benutzers und Microsoft OneDrive zum Speichern dieser Art von Informationen zu verwenden. App-Daten eignen sich ideal zum Speichern appspezifischer Benutzereinstellungen, Einstellungen und Favoriten.
Typen von App-Daten
Es gibt zwei Arten von App-Daten: Einstellungen und Dateien.
Einstellungen
Verwenden Sie Einstellungen zum Speichern von Benutzereinstellungen und Anwendungsstatusinformationen. Mit der App-Daten-API können Sie ganz einfach Einstellungen erstellen und abrufen (wir zeigen Ihnen einige Beispiele weiter unten in diesem Artikel).
Hier sind Datentypen, die Sie für App-Einstellungen verwenden können:
- UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double
- Boolescher Wert
- Char16, String
- DateTime, TimeSpan
- Verwenden Sie für C#/.NET: System.DateTimeOffset, System.TimeSpan
- GUID, Point, Size, Rect
- ApplicationDataCompositeValue: Eine Reihe von verwandten App-Einstellungen, die atomisch serialisiert und deserialisiert werden müssen. Verwenden Sie zusammengesetzte Einstellungen, um auf einfache Weise atomische Aktualisierungen von interdependenten Einstellungen zu verarbeiten. Das System stellt die Integrität zusammengesetzter Einstellungen während des gleichzeitigen Zugriffs und Roamings sicher. Zusammengesetzte Einstellungen sind für kleine Datenmengen optimiert und die Leistung kann schlecht sein, wenn Sie sie für große Datasets verwenden.
Dateien
Verwenden Sie Dateien zum Speichern von Binärdaten oder zum Aktivieren eigener, angepasster serialisierter Typen.
Speichern von App-Daten in den App-Datenspeichern
Wenn eine App installiert ist, erhält das System eigene Datenspeicher pro Benutzer für Einstellungen und Dateien. Sie müssen nicht wissen, wo oder wie diese Daten vorhanden sind, da das System für die Verwaltung des physischen Speichers verantwortlich ist, um sicherzustellen, dass die Daten von anderen Apps und anderen Benutzern isoliert werden. Das System behält auch den Inhalt dieser Datenspeicher bei, wenn der Benutzer ein Update für Ihre App installiert und den Inhalt dieser Datenspeicher vollständig und sauber entfernt, wenn Ihre App deinstalliert wird.
Innerhalb des App-Datenspeichers verfügt jede App über systemdefinierte Stammverzeichnisse: eine für lokale Dateien, eine für Roaming-Dateien und eine für temporäre Dateien. Ihre App kann jedem dieser Stammverzeichnisse neue Dateien und neue Container hinzufügen.
Lokale App-Daten
Lokale App-Daten sollten für alle Informationen verwendet werden, die zwischen App-Sitzungen beibehalten werden müssen und nicht für das Roaming von App-Daten geeignet sind. Daten, die auf anderen Geräten nicht anwendbar sind, sollten ebenfalls hier gespeichert werden. Es gibt keine allgemeine Größenbeschränkung für lokale Daten, die gespeichert sind. Verwenden Sie den lokalen App-Datenspeicher für Daten, bei denen ein Roaming nicht sinnvoll ist, und für große Datensätze.
Abrufen des lokalen App-Datenspeichers
Bevor Sie lokale App-Daten lesen oder schreiben können, müssen Sie den lokalen App-Datenspeicher abrufen. Um den lokalen App-Datenspeicher abzurufen, verwenden Sie die ApplicationData.LocalSettings-Eigenschaft, um die lokalen Einstellungen der App als ApplicationDataContainer-Objekt abzurufen. Verwenden Sie die ApplicationData.LocalFolder-Eigenschaft, um die Dateien in einem StorageFolder-Objekt abzurufen. Verwenden Sie die ApplicationData.LocalCacheFolder-Eigenschaft, um den Ordner im lokalen App-Datenspeicher abzurufen, in dem Sie Dateien speichern können, die nicht beim Sichern und Wiederherstellen enthalten sind.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
Erstellen und Abrufen einer einfachen lokalen Einstellung
Verwenden Sie zum Erstellen oder Schreiben einer Einstellung die ApplicationDataContainer.Values-Eigenschaft, um auf die Einstellungen im Container localSettings
zuzugreifen, die wir im vorherigen Schritt erhalten haben. In diesem Beispiel wird eine Einstellung mit der Bezeichnung exampleSetting
erstellt.
// Simple setting
localSettings.Values["exampleSetting"] = "Hello Windows";
Zum Abrufen der Einstellung verwenden Sie dieselbe ApplicationDataContainer.Values-Eigenschaft, die Sie zum Erstellen der Einstellung verwendet haben. In diesem Beispiel wird gezeigt, wie Sie die soeben erstellte Einstellung abrufen.
// Simple setting
Object value = localSettings.Values["exampleSetting"];
Erstellen und Abrufen eines lokalen zusammengesetzten Werts
Um einen zusammengesetzten Wert zu erstellen oder zu schreiben, erstellen Sie ein ApplicationDataCompositeValue-Objekt. In diesem Beispiel wird eine zusammengesetzte Einstellung namens exampleCompositeSetting
erstellt und dem localSettings
-Container hinzugefügt.
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
localSettings.Values["exampleCompositeSetting"] = composite;
In diesem Beispiel wird gezeigt, wie Sie den soeben erstellten zusammengesetzten Wert abrufen.
// 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"]
}
Erstellen und Lesen einer lokalen Datei
Verwenden Sie zum Erstellen und Aktualisieren einer Datei im lokalen App-Datenspeicher die Datei-APIs, z. B. Windows.Storage.StorageFolder.CreateFileAsync und Windows.Storage.FileIO.WriteTextAsync. In diesem Beispiel wird eine Datei mit dem Namen dataFile.txt
im Container localFolder
erstellt und das aktuelle Datum und die Uhrzeit in die Datei geschrieben. Der ReplaceExisting-Wert aus der CreationCollisionOption-Enumeration gibt an, die Datei zu ersetzen, wenn sie bereits vorhanden ist.
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));
}
Um eine Datei im lokalen App-Datenspeicher zu öffnen und zu lesen, verwenden Sie die Datei-APIs, z. B. Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync und Windows.Storage.FileIO.ReadTextAsync. In diesem Beispiel wird die im vorherigen Schritt erstellte dataFile.txt
-Datei geöffnet und das Datum aus der Datei gelesen. Ausführliche Informationen zum Laden von Dateiressourcen von verschiedenen Speicherorten finden Sie unter Laden von Dateiressourcen.
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
}
}
Roamingdaten
Warnung
Roamingdaten und -einstellungen werden ab Windows 11 nicht mehr unterstützt. Der empfohlene Ersatz ist Azure App Service. Azure App Service wird umfassend unterstützt, ist gut dokumentiert, zuverlässig und unterstützt plattform-/ökosystemübergreifende Szenarien wie iOS, Android und Web.
Die folgende Dokumentation gilt für Windows 10-Versionen 1909 und niedriger.
Wenn Sie Roamingdaten in Ihrer App verwenden, können Ihre Benutzer die App-Daten Ihrer App auf mehreren Geräten problemlos synchronisieren. Wenn ein Benutzer Ihre App auf mehreren Geräten installiert, hält das Betriebssystem die App-Daten synchron, wodurch die Anzahl der Setupaufgaben reduziert wird, die der Benutzer für Ihre App auf dem zweiten Gerät ausführen muss. Roaming ermöglicht es Ihren Benutzern auch, eine Aufgabe fortzusetzen, z. B. das Verfassen einer Liste, direkt dort, wo sie auf einem anderen Gerät aufgehört haben. Das Betriebssystem repliziert Roamingdaten bei der Aktualisierung in die Cloud und synchronisiert die Daten mit den anderen Geräten, auf denen die App installiert ist.
Das Betriebssystem begrenzt die Größe der App-Daten, die jede App übertragen darf. Siehe ApplicationData.RoamingStorageQuota. Wenn die App diesen Grenzwert erreicht, werden keine App-Daten der App in die Cloud repliziert, bis die Gesamtanzahl der roamingfähigen App-Daten kleiner als der Grenzwert ist. Aus diesem Grund empfiehlt es sich, Roamingdaten nur für Benutzereinstellungen, Links und kleine Datendateien zu verwenden.
Roamingdaten für eine App sind in der Cloud verfügbar, solange der Benutzer innerhalb des erforderlichen Zeitintervalls von einem Gerät aus auf sie zugreift. Wenn der Benutzer eine App nicht länger als dieses Zeitintervall ausführt, werden die Roamingdaten aus der Cloud entfernt. Wenn ein Benutzer eine App deinstalliert, werden die Roamingdaten nicht automatisch aus der Cloud entfernt, sondern bleiben erhalten. Wenn der Benutzer die App innerhalb des Zeitintervalls erneut installiert, werden die Roamingdaten aus der Cloud synchronisiert.
Regeln für Roamingdaten
Wichtiger Hinweis zu Roamingdaten.
- Verwenden Sie Roaming für Benutzereinstellungen und Anpassungen, Links und kleine Datendateien. Verwenden Sie beispielsweise Roaming, um die Hintergrundfarbeinstellung eines Benutzers auf allen Geräten beizubehalten.
- Verwenden Sie Roaming, damit Benutzer eine Aufgabe geräteübergreifend fortsetzen können. Roaming von App-Daten wie dem Inhalt einer E-Mail-Entwürfe oder der zuletzt angezeigten Seite in einer Leser-App.
- Behandeln Sie das DataChanged-Event, indem Sie App-Daten aktualisieren. Dieses Event tritt auf, wenn die Synchronisierung von App-Daten soeben aus der Cloud abgeschlossen ist.
- Roaming von Verweisen auf Inhalte anstelle von Rohdaten. Führen Sie z. B. ein Roaming für eine URL anstelle des Inhalts eines Onlineartikels durch.
- Verwenden Sie für wichtige, zeitkritische Einstellungen die HighPriority-Einstellung, die mit RoamingSettings verbunden ist.
- Roaming von gerätespezifischen Anwendungsdaten ist nicht zulässig. Einige Informationen sind nur lokal relevant, z. B. ein Pfadname zu einer lokalen Dateiressource. Wenn Sie sich für das Roaming lokaler Daten entscheiden, stellen Sie sicher, dass die App die Daten wiederherstellen kann, wenn sie auf dem zweiten Gerät ungültig sind.
- Verwenden Sie kein Roaming für große Gruppen von App-Daten. Es gibt eine Grenze für die Datenmenge, die eine App roamen kann; verwenden Sie die RoamingStorageQuota-Eigenschaft, um dieses Maximum abzurufen. Wenn eine App diese Grenze erreicht, können keine Daten mehr roamen, bis die Größe des App-Datenspeichers diese Grenze nicht mehr überschreitet. Überlegen Sie bei der Entwicklung Ihrer Anwendung, wie Sie größere Datenmengen begrenzen können, damit der Grenzwert nicht überschritten wird. Wenn das Speichern eines Spielzustands beispielsweise jeweils 10 KB erfordert, kann die App nur bis zu 10 Spiele speichern.
- Verwenden Sie kein Roaming für Daten, die auf der sofortigen Synchronisierung basieren. Windows garantiert keine sofortige Synchronisierung; Roaming kann erheblich verzögert werden, wenn ein Benutzer offline oder in einem Netzwerk mit hoher Latenz ist. Stellen Sie sicher, dass ihre Benutzeroberfläche nicht von der sofortigen Synchronisierung abhängt.
- Verwenden Sie Roaming nicht für häufig geänderte Daten. Wenn Ihre App beispielsweise häufig geänderte Informationen nachverfolgt, z. B. die Position in einem Song nach Sekunde, speichern Sie dies nicht als Roaming-App-Daten. Wählen Sie stattdessen eine weniger häufige Darstellung aus, die weiterhin eine gute Benutzererfahrung bietet, z. B. den aktuell wiedergegebenen Song.
Voraussetzungen für Roaming
Wichtiger Hinweis zu Roamingdaten.
Jeder Benutzer kann von Roaming-App-Daten profitieren, wenn er ein Microsoft-Konto verwendet, um sich bei ihrem Gerät anzumelden. Benutzer und Gruppenrichtlinienadministratoren können das Roaming von App-Daten auf einem Gerät jedoch jederzeit deaktivieren. Benutzer, die kein Microsoft-Konto verwenden oder die Datenroamingfunktion deaktivieren, können Ihre App weiterhin verwenden, die App-Daten sind dann jedoch auf jedem Gerät lokal.
Daten, die im PasswordVault gespeichert sind, werden nur übertragen, wenn ein Benutzer ein Gerät als „vertrauenswürdig“ eingestuft hat. Wenn ein Gerät nicht vertrauenswürdig ist, werden in diesem Tresor gesicherte Daten nicht übertragen.
Konfliktlösung
Wichtiger Hinweis zu Roamingdaten.
Roaming-App-Daten sind nicht für die gleichzeitige Verwendung auf mehreren Geräten vorgesehen. Wenn während der Synchronisierung ein Konflikt auftritt, da eine bestimmte Dateneinheit auf zwei Geräten geändert wurde, bevorzugt das System immer den Wert, der zuletzt geschrieben wurde. Dadurch wird sichergestellt, dass die App die aktuellsten Informationen verwendet. Wenn es sich bei der Dateneinheit um eine zusammengesetzte Einstellung handelt, tritt die Konfliktauflösung weiterhin auf der Ebene der Einstellungseinheit auf, was bedeutet, dass die Zusammensetzung mit der letzten Änderung synchronisiert wird.
Zeitpunkt zum Schreiben von Daten
Wichtiger Hinweis zu Roamingdaten.
Abhängig von der erwarteten Lebensdauer der Einstellung sollten Daten zu unterschiedlichen Zeiten geschrieben werden. Sich selten oder langsam ändernde App-Daten sollten sofort geschrieben werden. App-Daten, die sich häufig ändern, sollten jedoch nur in regelmäßigen Abständen geschrieben werden (z. B. einmal alle 5 Minuten), sowie wenn die App angehalten wird. So kann eine Musik-App beispielsweise die Einstellung für den „aktuellen Titel“ schreiben, wenn ein neuer Titel wiedergegeben wird, aber die aktuelle Position im Titel sollte nur in angehaltenem Zustand der Anwendung geschrieben werden.
Schutz vor übermäßiger Nutzung
Wichtiger Hinweis zu Roamingdaten.
Das System verfügt über verschiedene Schutzmechanismen, um eine unangemessene Nutzung von Ressourcen zu vermeiden. Wenn App-Daten nicht wie erwartet übertragen werden, ist es wahrscheinlich, dass das Gerät vorübergehend eingeschränkt wurde. Wenn Sie einige Zeit warten, löst sich diese Situation in der Regel von selbst und Sie müssen nichts unternehmen.
Versionsverwaltung
Wichtiger Hinweis zu Roamingdaten.
App-Daten können die Versionsverwaltung verwenden, um von einer Datenstruktur auf eine andere zu aktualisieren. Die Versionsnummer unterscheidet sich von der Version der App und kann nach Belieben eingestellt werden. Es wird zwar nicht erzwungen, es wird jedoch dringend empfohlen, steigende Versionsnummern zu verwenden, da unerwünschte Komplikationen (einschließlich Datenverlust) auftreten können, wenn Sie versuchen, zu einer niedrigeren Datenversionsnummer zu wechseln, die neuere Daten darstellt.
App-Daten werden nur zwischen installierten Apps mit derselben Versionsnummer übertragen. So werden beispielsweise Geräte der Version 2 untereinander Daten austauschen und Geräte der Version 3 tun dasselbe, aber es findet kein Roaming zwischen einem Gerät der Version 2 und einem Gerät der Version 3 statt. Wenn Sie eine neue App installieren, die verschiedene Versionsnummern auf anderen Geräten verwendet, synchronisiert die neu installierte App die App-Daten, die der höchsten Versionsnummer zugeordnet sind.
Tests und Tools
Wichtiger Hinweis zu Roamingdaten.
Entwickler können ihr Gerät sperren, um eine Synchronisierung von Roaming-App-Daten auszulösen. Wenn es scheint, dass die App-Daten nicht innerhalb eines bestimmten Zeitrahmens übertragen werden, überprüfen Sie die folgenden Elemente und stellen Sie sicher, dass:
- Ihre Roamingdaten nicht die maximale Größe überschreiten (Details finden Sie unter RoamingStorageQuota).
- Ihre Dateien geschlossen und ordnungsgemäß freigegeben werden.
- Es gibt mindestens zwei Geräte, auf denen dieselbe Version der App ausgeführt wird.
Registrieren Sie sich, um bei Änderungen der Roamingdaten eine Benachrichtigung zu erhalten
Wichtiger Hinweis zu Roamingdaten.
Um Roaming-App-Daten zu verwenden, müssen Sie sich für Roamingdatenänderungen registrieren und die Roamingdatencontainer abrufen, damit Sie Einstellungen lesen und schreiben können.
Registrieren Sie sich, um bei Änderungen der Roamingdaten eine Benachrichtigung zu erhalten.
Das DataChanged-Event benachrichtigt Sie, wenn sich Roamingdaten ändern. In diesem Beispiel wird
DataChangeHandler
als Handler für Roamingdatenänderungen festgelegt.
void InitHandlers()
{
Windows.Storage.ApplicationData.Current.DataChanged +=
new TypedEventHandler<ApplicationData, object>(DataChangeHandler);
}
void DataChangeHandler(Windows.Storage.ApplicationData appData, object o)
{
// TODO: Refresh your data
}
Rufen Sie die Container für die Einstellungen und Dateien der App ab.
Verwenden Sie die ApplicationData.RoamingSettings-Eigenschaft, um die Einstellungen und die ApplicationData.RoamingFolder-Eigenschaft abzurufen, um die Dateien abzurufen.
Windows.Storage.ApplicationDataContainer roamingSettings =
Windows.Storage.ApplicationData.Current.RoamingSettings;
Windows.Storage.StorageFolder roamingFolder =
Windows.Storage.ApplicationData.Current.RoamingFolder;
Erstellen und Abrufen von Roamingeinstellungen
Wichtiger Hinweis zu Roamingdaten.
Verwenden Sie die ApplicationDataContainer.Values-Eigenschaft, um auf die Einstellungen im Container roamingSettings
zuzugreifen, die wir im vorherigen Abschnitt erhalten haben. In diesem Beispiel wird eine einfache Einstellung namens exampleSetting
und ein zusammengesetzter Wert mit dem Namen composite
erstellt.
// 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;
In diesem Beispiel werden die soeben erstellten Einstellungen abgerufen.
// 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"]
}
Erstellen und Abrufen von Roamingdateien
Wichtiger Hinweis zu Roamingdaten.
Verwenden Sie zum Erstellen und Aktualisieren einer Datei im Roaming-App-Datenspeicher die Datei-APIs, z. B. Windows.Storage.StorageFolder.CreateFileAsync und Windows.Storage.FileIO.WriteTextAsync. In diesem Beispiel wird eine Datei mit dem Namen dataFile.txt
im Container roamingFolder
erstellt und das aktuelle Datum und die Uhrzeit in die Datei geschrieben. Der ReplaceExisting-Wert aus der CreationCollisionOption-Enumeration gibt an, die Datei zu ersetzen, wenn sie bereits vorhanden ist.
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));
}
Um eine Datei im Roaming-App-Datenspeicher zu öffnen und zu lesen, verwenden Sie die Datei-APIs, z. B. Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync und Windows.Storage.FileIO.ReadTextAsync. In diesem Beispiel wird die im vorherigen Abschnitt erstellte dataFile.txt
-Datei geöffnet und das Datum aus der Datei gelesen. Ausführliche Informationen zum Laden von Dateiressourcen von verschiedenen Speicherorten finden Sie unter Laden von Dateiressourcen.
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
}
}
Temporäre App-Daten
Der temporäre App-Datenspeicher funktioniert wie ein Cache. Die Dateien werden nicht übertragen und können jederzeit entfernt werden. Die Systemwartung kann die an diesem Ort gespeicherten Daten jederzeit automatisch löschen. Der Benutzer kann Dateien auch mithilfe der Datenträgerbereinigung aus dem temporären Datenspeicher löschen. Temporäre App-Daten können zum Speichern temporärer Informationen während einer App-Sitzung verwendet werden. Es gibt keine Garantie dafür, dass diese Daten über das Ende der App-Sitzung hinaus bestehen bleiben, da das System ggf. den verwendeten Speicherplatz zurückgibt. Der Speicherort ist über die temporaryFolder-Eigenschaft verfügbar.
Abrufen des temporären Datencontainers
Verwenden Sie die ApplicationData.TemporaryFolder-Eigenschaft, um die Dateien abzurufen. In den nächsten Schritten wird die Variable temporaryFolder
aus diesem Schritt verwendet.
Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;
Erstellen und Lesen temporärer Dateien
Verwenden Sie zum Erstellen und Aktualisieren einer Datei im temporären App-Datenspeicher die Datei-APIs, z. B. Windows.Storage.StorageFolder.CreateFileAsync und Windows.Storage.FileIO.WriteTextAsync. In diesem Beispiel wird eine Datei mit dem Namen dataFile.txt
im Container temporaryFolder
erstellt und das aktuelle Datum und die Uhrzeit in die Datei geschrieben. Der ReplaceExisting-Wert aus der CreationCollisionOption-Enumeration gibt an, die Datei zu ersetzen, wenn sie bereits vorhanden ist.
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));
}
Um eine Datei im temporären App-Datenspeicher zu öffnen und zu lesen, verwenden Sie die Datei-APIs, z. B. Windows.Storage.StorageFolder.GetFileAsync, Windows.Storage.StorageFile.GetFileFromApplicationUriAsync und Windows.Storage.FileIO.ReadTextAsync. In diesem Beispiel wird die im vorherigen Schritt erstellte dataFile.txt
-Datei geöffnet und das Datum aus der Datei gelesen. Ausführliche Informationen zum Laden von Dateiressourcen von verschiedenen Speicherorten finden Sie unter Laden von Dateiressourcen.
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
}
}
Organisieren von App-Daten mit Containern
Um Ihre App-Dateneinstellungen und -dateien zu organisieren, erstellen Sie Container (dargestellt durch ApplicationDataContainer-Objekte), anstatt direkt mit Verzeichnissen zu arbeiten. Sie können Container zu den lokalen, Roaming- und temporären App-Datenspeichern hinzufügen. Container können bis zu 32 Ebenen tief geschachtelt werden.
Rufen Sie zum Erstellen eines Einstellungscontainers die ApplicationDataContainer.CreateContainer-Methode auf. In diesem Beispiel wird ein lokaler Einstellungscontainer namens exampleContainer
erstellt und eine Einstellung namens exampleSetting
hinzugefügt. Der Always-Wert aus der ApplicationDataCreateDisposition-Enumeration gibt an, dass der Container erstellt wird, wenn er noch nicht vorhanden ist.
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";
}
Löschen von App-Einstellungen und -Containern
Um eine einfache Einstellung zu löschen, die Ihre App nicht mehr benötigt, verwenden Sie die ApplicationDataContainerSettings.Remove-Methode. In diesem Beispiel wird die zuvor erstellte lokale Einstellung exampleSetting
gelöscht.
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");
Verwenden Sie zum Löschen einer zusammengesetzten Einstellung die ApplicationDataCompositeValue.Remove-Methode. In diesem Beispiel wird die lokale zusammengesetzte exampleCompositeSetting
-Einstellung gelöscht, die wir in einem früheren Beispiel erstellt haben.
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");
Rufen Sie zum Löschen eines Containers die ApplicationDataContainer.DeleteContainer-Methode auf. In diesem Beispiel wird der zuvor erstellte lokale exampleContainer
-Einstellungscontainer gelöscht.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Delete container
localSettings.DeleteContainer("exampleContainer");
Versionierung Ihrer App-Daten
Sie können optional die App-Daten für Ihre App versionieren. Auf diese Weise können Sie eine zukünftige Version Ihrer App erstellen, die das Format der App-Daten ändert, ohne Kompatibilitätsprobleme mit der vorherigen Version Ihrer App zu verursachen. Die App überprüft die Version der App-Daten im Datenspeicher und wenn die Version kleiner ist als die von der App erwartete Version, sollte die App die App-Daten auf das neue Format aktualisieren und die Version aktualisieren. Weitere Informationen finden Sie unter derApplication.Version-Eigenschaft und der ApplicationData.SetVersionAsync-Methode.
Verwandte Artikel
Windows developer