Hinweis
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, sich anzumelden oder das Verzeichnis zu wechseln.
Für den Zugriff auf diese Seite ist eine Autorisierung erforderlich. Sie können versuchen, das Verzeichnis zu wechseln.
Von Bedeutung
Die in diesem Artikel beschriebenen apIs ApplicationData sind für verpackte Apps konzipiert. Entpackte Apps haben keinen Zugriff auf die vom System verwalteten App-Datenspeicher und sollten alternative Speichermechanismen wie direkte Datei-E/A oder Registrierungszugriff verwenden.
App-Daten sind veränderbare Daten, die von einer bestimmten App erstellt und verwaltet werden. Sie enthält Laufzeitstatus, App-Einstellungen, Benutzereinstellungen, Referenzinhalte (z. B. 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 App-Daten daher verloren. Verwenden Sie app-Daten nicht, um Benutzerdaten oder etwas zu speichern, das Benutzer als wertvoll und unersetzlich wahrnehmen können. Es wird empfohlen, dass die Bibliotheken des Benutzers und Microsoft OneDrive verwendet werden, um diese Art von Informationen zu speichern. App-Daten eignen sich ideal zum Speichern appspezifischer Benutzereinstellungen, Einstellungen und Favoriten.
Arten von App-Daten
Es gibt zwei Arten von App-Daten: Einstellungen und Dateien.
Settings
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
- Boolean
- Char16, String
-
DateTime, TimeSpan
- Verwenden Sie für C#/.NET: System.DateTimeOffset, System.TimeSpan
- GUID, Point, Size, Rect
- ApplicationDataCompositeValue: Eine Reihe verwandter App-Einstellungen, die atomisch serialisiert und deserialisiert werden müssen. Verwenden Sie zusammengesetzte Einstellungen, um auf einfache Weise Atomaktualisierungen 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 die Inhalte 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 Roamingdateien 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, die es nicht sinnvoll ist zu synchronisieren, 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. Verwenden Sie zum Abrufen des lokalen App-Datenspeichers die ApplicationData.LocalSettingseigenschaft, um die lokalen Einstellungen der App als ApplicationDataContainerobjekt abzurufen. Verwenden Sie die eigenschaft ApplicationData.LocalFolder, um die Dateien in einem StorageFolderobjekt abzurufen. Verwenden Sie die ApplicationData.LocalCacheFolder-Eigenschaft , um den Ordner im lokalen App-Datenspeicher abzurufen, in dem Sie Dateien speichern können, die nicht in der Sicherung und Wiederherstellung 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 zuzugreifen, die localSettings wir im vorherigen Schritt erhalten haben. In diesem Beispiel wird eine Einstellung mit dem Namen exampleSettingerstellt.
// 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
Um eine Datei im lokalen App-Datenspeicher zu erstellen und zu aktualisieren, verwenden Sie 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 aktuelle Uhrzeit in die Datei geschrieben. Der Wert ReplaceExisting aus der Enumeration CreationCollisionOption gibt an, dass die Datei ersetzt werden soll, 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 dataFile.txt im vorherigen Schritt erstellte 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 weit verbreitet, gut dokumentiert, zuverlässig und unterstützt plattformübergreifende/ökosystemübergreifende Szenarien wie iOS, Android und Web.
Temporäre App-Daten
Der temporäre App-Datenspeicher funktioniert wie ein Cache. Ihre Dateien werden nicht synchronisiert und können jederzeit entfernt werden. Die Systemwartungsaufgabe kann daten, die an diesem Ort gespeichert sind, 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 temporaryFolder Variable aus diesem Schritt verwendet.
Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;
Erstellen und Lesen temporärer Dateien
Um eine Datei im temporären App-Datenspeicher zu erstellen und zu aktualisieren, verwenden Sie die Datei-APIs, z. B. Windows. Storage.StorageFolder.CreateFileAsync und Windows. Storage.FileIO.WriteTextAsync. In diesem Beispiel wird eine Datei namens dataFile.txt im Container temporaryFolder erstellt und das aktuelle Datum und die aktuelle Uhrzeit in die Datei geschrieben. Der Wert ReplaceExisting aus der Enumeration CreationCollisionOption signalisiert, dass die Datei ersetzt werden soll, 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));
}
Zum Öffnen und Lesen einer Datei im temporären App-Datenspeicher 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 dataFile.txt im vorherigen Schritt erstellte 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 ApplicationDataContainerObjekte), 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 erstellt exampleContainer und eine Einstellung namens hinzugefügt exampleSetting. Der wert Always aus dem 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 exampleSetting zuvor erstellte lokale Einstellung 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 exampleCompositeSetting zusammengesetzte 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 Container für lokale exampleContainer Einstellungen 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");
Versionsverwaltung 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