Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Belangrijk
De ApplicationData-API's die in dit artikel worden beschreven, zijn ontworpen voor verpakte apps. Uitgepakte apps hebben geen toegang tot de door het systeem beheerde app-gegevensarchieven en moeten alternatieve opslagmechanismen gebruiken, zoals directe bestands-I/O- of registertoegang.
App-gegevens zijn veranderlijke gegevens die worden gemaakt en beheerd door een specifieke app. Het bevat runtimestatus, app-instellingen, gebruikersvoorkeuren, referentie-inhoud (zoals de woordenlijstdefinities in een woordenlijst-app) en andere instellingen. App-gegevens verschillen van gebruikersgegevens, gegevens die de gebruiker maakt en beheert bij het gebruik van een app. Gebruikersgegevens omvatten document- of mediabestanden, e-mail- of communicatietranscripties of databaserecords met inhoud die door de gebruiker is gemaakt. Gebruikersgegevens kunnen nuttig of zinvol zijn voor meer dan één app. Dit zijn vaak gegevens die de gebruiker wil bewerken of verzenden als een entiteit onafhankelijk van de app zelf, zoals een document.
Belangrijke opmerking over app-gegevens: De levensduur van de app-gegevens is gekoppeld aan de levensduur van de app. Als de app wordt verwijderd, gaan alle app-gegevens verloren. Gebruik geen app-gegevens om gebruikersgegevens op te slaan of iets wat gebruikers kunnen ervaren als waardevol en onvervangbaar. We raden u aan de bibliotheken van de gebruiker en Microsoft OneDrive worden gebruikt om dit soort informatie op te slaan. App-gegevens zijn ideaal voor het opslaan van app-specifieke gebruikersvoorkeuren, instellingen en favorieten.
Typen app-gegevens
Er zijn twee typen app-gegevens: instellingen en bestanden.
Settings
Gebruik instellingen om gebruikersvoorkeuren en toepassingsstatusgegevens op te slaan. Met de API voor app-gegevens kunt u eenvoudig instellingen maken en ophalen (verderop in dit artikel worden enkele voorbeelden weergegeven).
Hier volgen gegevenstypen die u kunt gebruiken voor app-instellingen:
- UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double
- Boolean
- Char16, String
-
DateTime, TimeSpan
- Gebruik voor C#/.NET: System.DateTimeOffset, System.TimeSpan
- GUID, Point, Ize, Rect
- ApplicationDataCompositeValue: een samenhangende set app-instellingen die atomisch moeten worden geserialiseerd en gedeserialiseerd. Gebruik samengestelde instellingen om eenvoudig atomische updates van onderling afhankelijke instellingen te verwerken. Het systeem zorgt voor de integriteit van samengestelde instellingen tijdens gelijktijdige toegang en roaming. Samengestelde instellingen zijn geoptimaliseerd voor kleine hoeveelheden gegevens en prestaties kunnen slecht zijn als u ze gebruikt voor grote gegevenssets.
Files
Gebruik bestanden om binaire gegevens op te slaan of om uw eigen, aangepaste geserialiseerde typen in te schakelen.
App-gegevens opslaan in de app-gegevensarchieven
Wanneer een app is geïnstalleerd, krijgt het systeem eigen gegevensarchieven per gebruiker voor instellingen en bestanden. U hoeft niet te weten waar of hoe deze gegevens bestaan, omdat het systeem verantwoordelijk is voor het beheren van de fysieke opslag, zodat de gegevens geïsoleerd blijven van andere apps en andere gebruikers. Het systeem behoudt ook de inhoud van deze gegevensarchieven wanneer de gebruiker een update voor uw app installeert en de inhoud van deze gegevensarchieven volledig en schoon verwijdert wanneer uw app wordt verwijderd.
In het app-gegevensarchief heeft elke app door het systeem gedefinieerde hoofdmappen: één voor lokale bestanden, één voor roamingbestanden en één voor tijdelijke bestanden. Uw app kan nieuwe bestanden en nieuwe containers toevoegen aan elk van deze hoofdmappen.
Lokale app-gegevens
Lokale app-gegevens moeten worden gebruikt voor informatie die moet worden bewaard tussen app-sessies en is niet geschikt voor roaming-app-gegevens. Gegevens die niet van toepassing zijn op andere apparaten, moeten hier ook worden opgeslagen. Er is geen algemene groottebeperking voor lokale gegevens die zijn opgeslagen. Gebruik het lokale app-gegevensarchief voor gegevens die niet zinvol zijn om te roamen en voor grote gegevenssets.
Het lokale app-gegevensarchief ophalen
Voordat u lokale app-gegevens kunt lezen of schrijven, moet u het lokale app-gegevensarchief ophalen. Als u het lokale app-gegevensarchief wilt ophalen, gebruikt u de eigenschap ApplicationData.LocalSettings om de lokale instellingen van de app op te halen als een ApplicationDataContainer-object. Gebruik de eigenschap ApplicationData.LocalFolder om de bestanden op te halen in een StorageFolder-object. Gebruik de eigenschap ApplicationData.LocalCacheFolder om de map op te halen in het lokale app-gegevensarchief, waar u bestanden kunt opslaan die niet zijn opgenomen in back-up en herstel.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
Een eenvoudige lokale instelling maken en ophalen
Als u een instelling wilt maken of schrijven, gebruikt u de eigenschap ApplicationDataContainer.Values voor toegang tot de instellingen in de localSettings container die we in de vorige stap hebben gekregen. In dit voorbeeld wordt een instelling gemaakt met de naam exampleSetting.
// Simple setting
localSettings.Values["exampleSetting"] = "Hello Windows";
Als u de instelling wilt ophalen, gebruikt u dezelfde eigenschap ApplicationDataContainer.Values die u hebt gebruikt om de instelling te maken. In dit voorbeeld laten we zien hoe je de instelling kunt ophalen die we zojuist hebben gemaakt.
// Simple setting
Object value = localSettings.Values["exampleSetting"];
Een lokale samengestelde waarde maken en ophalen
Als u een samengestelde waarde wilt maken of schrijven, maakt u een ApplicationDataCompositeValue-object. In dit voorbeeld wordt een samengestelde instelling met de naam gemaakt exampleCompositeSetting en toegevoegd aan de localSettings container.
// Composite setting
Windows.Storage.ApplicationDataCompositeValue composite =
new Windows.Storage.ApplicationDataCompositeValue();
composite["intVal"] = 1;
composite["strVal"] = "string";
localSettings.Values["exampleCompositeSetting"] = composite;
In dit voorbeeld ziet u hoe u de samengestelde waarde ophaalt die we zojuist hebben gemaakt.
// 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"]
}
Een lokaal bestand maken en lezen
Als u een bestand wilt maken en bijwerken in het lokale app-gegevensarchief, gebruikt u de bestands-API's, zoals Windows. Storage.StorageFolder.CreateFileAsync en Windows. Storage.FileIO.WriteTextAsync. In dit voorbeeld wordt een bestand gemaakt met de naam dataFile.txt in de localFolder container en wordt de huidige datum en tijd naar het bestand geschreven. De waarde ReplaceExisting uit de opsomming CreationCollisionOption geeft aan dat het bestand moet worden vervangen als het al bestaat.
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));
}
Als u een bestand wilt openen en lezen in het lokale app-gegevensarchief, gebruikt u de bestands-API's, zoals Windows. Storage.StorageFolder.GetFileAsync, Windows. Storage.StorageFile.GetFileFromApplicationUriAsync en Windows. Storage.FileIO.ReadTextAsync. In dit voorbeeld wordt het dataFile.txt bestand geopend dat in de vorige stap is gemaakt en wordt de datum uit het bestand gelezen. Zie Bestandsbronnen laden vanaf verschillende locaties voor meer informatie over het laden van bestandsbronnen.
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
}
}
Roaminggegevens
Waarschuwing
Roaminggegevens en -instellingen worden niet langer ondersteund vanaf Windows 11. De aanbevolen vervanging is Azure App Service. Azure App Service wordt breed ondersteund, goed gedocumenteerd, betrouwbaar en ondersteunt platformoverschrijdende scenario's met meerdere ecosystemen, zoals iOS, Android en web.
Tijdelijke app-gegevens
Het tijdelijke app-gegevensarchief werkt als een cache. De bestanden worden niet geroerd en kunnen op elk gewenst moment worden verwijderd. De taak Systeemonderhoud kan op elk gewenst moment automatisch gegevens verwijderen die op deze locatie zijn opgeslagen. De gebruiker kan ook bestanden uit het tijdelijke gegevensarchief wissen met schijfopruiming. Tijdelijke app-gegevens kunnen worden gebruikt voor het opslaan van tijdelijke informatie tijdens een app-sessie. Er is geen garantie dat deze gegevens na het einde van de app-sessie behouden blijven, omdat het systeem indien nodig de gebruikte ruimte kan vrijmaken. De locatie is beschikbaar via de eigenschap temporaryFolder .
De tijdelijke gegevenscontainer ophalen
Gebruik de eigenschap ApplicationData.TemporaryFolder om de bestanden op te halen. In de volgende stappen wordt de temporaryFolder variabele uit deze stap gebruikt.
Windows.Storage.StorageFolder temporaryFolder = ApplicationData.Current.TemporaryFolder;
Tijdelijke bestanden maken en lezen
Als u een bestand wilt maken en bijwerken in het tijdelijke app-gegevensarchief, gebruikt u de bestands-API's, zoals Windows. Storage.StorageFolder.CreateFileAsync en Windows. Storage.FileIO.WriteTextAsync. In dit voorbeeld wordt een bestand gemaakt met de naam dataFile.txt in de temporaryFolder container en wordt de huidige datum en tijd naar het bestand geschreven. De waarde ReplaceExisting uit de opsomming CreationCollisionOption geeft aan dat het bestand moet worden vervangen als het al bestaat.
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));
}
Als u een bestand wilt openen en lezen in het tijdelijke app-gegevensarchief, gebruikt u de bestands-API's, zoals Windows. Storage.StorageFolder.GetFileAsync, Windows. Storage.StorageFile.GetFileFromApplicationUriAsync en Windows. Storage.FileIO.ReadTextAsync. In dit voorbeeld wordt het dataFile.txt bestand geopend dat in de vorige stap is gemaakt en wordt de datum uit het bestand gelezen. Zie Bestandsbronnen laden vanaf verschillende locaties voor meer informatie over het laden van bestandsbronnen.
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
}
}
App-gegevens organiseren met containers
U kunt uw app-gegevensinstellingen en -bestanden ordenen door containers te maken (vertegenwoordigd door ApplicationDataContainer objecten) in plaats van rechtstreeks met directory's te werken. U kunt containers toevoegen aan de lokale, roaming- en tijdelijke app-gegevensarchieven. Containers kunnen maximaal 32 niveaus diep worden genest.
Als u een instellingencontainer wilt maken, roept u de methode ApplicationDataContainer.CreateContainer aan. In dit voorbeeld wordt een container met lokale instellingen gemaakt met de naam exampleContainer en wordt een instelling met de naam exampleSettingtoegevoegd. De waarde Always uit de opsomming ApplicationDataCreateDisposition geeft aan dat de container wordt gemaakt als deze nog niet bestaat.
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";
}
App-instellingen en -containers verwijderen
Als u een eenvoudige instelling wilt verwijderen die uw app niet meer nodig heeft, gebruikt u de methode ApplicationDataContainerSettings.Remove . In dit voorbeeld wordt de exampleSetting lokale instelling verwijderd die we eerder hebben gemaakt.
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");
Als u een samengestelde instelling wilt verwijderen, gebruikt u de methode ApplicationDataCompositeValue.Remove . In dit voorbeeld wordt de lokale exampleCompositeSetting samengestelde instelling verwijderd die we in een eerder voorbeeld hebben gemaakt.
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");
Als u een container wilt verwijderen, roept u de methode ApplicationDataContainer.DeleteContainer aan. In dit voorbeeld wordt de container met lokale exampleContainer instellingen verwijderd die we eerder hebben gemaakt.
Windows.Storage.ApplicationDataContainer localSettings =
Windows.Storage.ApplicationData.Current.LocalSettings;
Windows.Storage.StorageFolder localFolder =
Windows.Storage.ApplicationData.Current.LocalFolder;
// Delete container
localSettings.DeleteContainer("exampleContainer");
Versiebeheer van uw app-gegevens
U kunt eventueel de app-gegevens van uw app versie beheren. Hierdoor kunt u een toekomstige versie van uw app maken die de indeling van de app-gegevens wijzigt zonder compatibiliteitsproblemen met de vorige versie van uw app te veroorzaken. De app controleert de versie van de app-gegevens in het gegevensarchief en als de versie kleiner is dan de versie die de app verwacht, moet de app de app-gegevens bijwerken naar de nieuwe indeling en de versie bijwerken. Zie de eigenschapApplication.Version en de methode ApplicationData.SetVersionAsync voor meer informatie.
Verwante artikelen
Windows developer