Beállítások és egyéb alkalmazásadatok tárolása és lekérése

Fontos

A cikkben ismertetett ApplicationData API-k csomagolt alkalmazásokhoz készültek. A csomagolatlan alkalmazások nem férnek hozzá a rendszer által felügyelt alkalmazásadattárakhoz, és alternatív tárolási mechanizmusokat kell használniuk, például a közvetlen fájl I/O-t vagy a beállításjegyzék-hozzáférést.

Az alkalmazásadatok egy adott alkalmazás által létrehozott és felügyelt, módosítható adatok. Ez magában foglalja a futtatókörnyezet állapotát, az alkalmazásbeállításokat, a felhasználói beállításokat, a referenciatartalmakat (például a szótáralkalmazás szótárdefinícióit) és egyéb beállításokat. Az alkalmazásadatok eltérnek a felhasználói adatoktól, azoktól az adatoktól, amelyeket a felhasználó egy alkalmazás használatakor hoz létre és kezel. A felhasználói adatok közé tartoznak a dokumentum- vagy médiafájlok, az e-mail- vagy kommunikációs átiratok, illetve a felhasználó által létrehozott tartalmakat tartalmazó adatbázisrekordok. A felhasználói adatok több alkalmazás számára is hasznosak vagy hasznosak lehetnek. Ezek az adatok gyakran olyan adatok, amelyeket a felhasználó az alkalmazástól független entitásként, például dokumentumként szeretne kezelni vagy továbbítani.

Fontos megjegyzés az alkalmazásadatokról: Az alkalmazásadatok élettartama az alkalmazás élettartamához van kötve. Ha az alkalmazás el lett távolítva, az alkalmazás összes adata elveszik. Ne használjon alkalmazásadatokat a felhasználói adatok tárolására, vagy olyan adatok tárolására, amelyeket a felhasználók értékesnek és pótolhatatlannak tekinthetnek. Javasoljuk, hogy a felhasználó kódtárait és Microsoft OneDrive használja az ilyen típusú információk tárolására. Az alkalmazásadatok ideálisak az alkalmazásspecifikus felhasználói beállítások, beállítások és kedvencek tárolására.

Alkalmazásadatok típusai

Az alkalmazásadatoknak két típusa van: a beállítások és a fájlok.

Settings

A beállítások segítségével tárolhatja a felhasználói beállításokat és az alkalmazásállapot-adatokat. Az alkalmazásadatok API lehetővé teszi a beállítások egyszerű létrehozását és lekérését (a cikk későbbi részében bemutatunk néhány példát).

Az alábbi adattípusok használhatók az alkalmazásbeállításokhoz:

  • UInt8, Int16, UInt16, Int32, UInt32, Int64, UInt64, Single, Double
  • boolean
  • Karakter16, karakterlánc
  • DateTime, TimeSpan
  • GUID, Point, Size, Rect
  • ApplicationDataCompositeValue: A kapcsolódó alkalmazásbeállítások készlete, amelyeket atomilag szerializálni és deszerializálni kell. Összetett beállítások használatával egyszerűen kezelheti az egymástól függő beállítások atomi frissítéseit. A rendszer biztosítja az összetett beállítások integritását az egyidejű hozzáférés és a barangolás során. Az összetett beállítások kis mennyiségű adatra vannak optimalizálva, és a teljesítmény gyenge lehet, ha nagy adathalmazokhoz használja őket.

Files

Fájlok használata bináris adatok tárolására vagy saját, testre szabott szerializált típusok engedélyezésére.

Alkalmazásadatok tárolása az alkalmazásadattárakban

Az alkalmazások telepítésekor a rendszer saját, felhasználónkénti adattárakat biztosít a beállításokhoz és fájlokhoz. Nem kell tudnia, hogy hol és hogyan léteznek ezek az adatok, mert a rendszer felelős a fizikai tárolás kezeléséért, biztosítva, hogy az adatok el legyenek különítve más alkalmazásoktól és más felhasználóktól. A rendszer általában megőrzi ezeknek az adattáraknak a tartalmát, amikor a felhasználó telepíti az alkalmazás frissítését, bár előfordulhat, hogy a RoamingSettings nem marad fenn Microsoft Store frissítéseken keresztül (lásd Az adatok lekérdezése). Az alkalmazásfrissítéseket túlélő beállításokhoz használja a LocalSettingst. A rendszer az alkalmazás eltávolításakor teljesen és tisztán eltávolítja ezeknek az adattáraknak a tartalmát.

Az alkalmazás adattárában minden alkalmazás rendszer által definiált gyökérkönyvtárakat tartalmaz: egyet a helyi fájlokhoz, egyet a központi fájlokhoz, egyet pedig az ideiglenes fájlokhoz. Az alkalmazás új fájlokat és új tárolókat adhat hozzá ezekhez a gyökérkönyvtárakhoz.

Helyi alkalmazásadatok

Helyi alkalmazásadatokat kell használni minden olyan információhoz, amelyet meg kell őrizni az alkalmazás munkamenetei között, és amelyek nem alkalmasak barangolásos alkalmazásadatokra. A más eszközökön nem alkalmazható adatokat itt is tárolni kell. A tárolt helyi adatokra nincs általános méretkorlátozás. Használja a helyi alkalmazásadattárat olyan adatokhoz, amelyeket nem szükséges szinkronizálni, és a nagy adathalmazokhoz. A helyi alkalmazásadatok megbízhatóan megmaradnak az alkalmazásfrissítéseken keresztül, így a LocalSettings az ajánlott választás a felhasználói beállítások és az alkalmazásállapot számára, amelyeknek Microsoft Store frissítéseket kell túlélniük.

A helyi alkalmazásadattár lekérése

A helyi alkalmazásadatok olvasása vagy írása előtt le kell kérnie a helyi alkalmazásadattárat. A helyi alkalmazásadattár lekéréséhez használja a ApplicationData.LocalSettings tulajdonságot az alkalmazás helyi beállításainak lekéréséhez ApplicationDataContainer objektumként. A ApplicationData.LocalFolder tulajdonság használatával kérje le a fájlokat egy StorageFolder objektumban. Az ApplicationData.LocalCacheFolder tulajdonság használatával kérje le a mappát a helyi alkalmazásadattárban, ahol mentheti a biztonsági mentésben és visszaállításban nem szereplő fájlokat.

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

Egyszerű helyi beállítás létrehozása és lekérése

Beállítás létrehozásához vagy írásához használja az ApplicationDataContainer.Values tulajdonságot az localSettings előző lépésben kapott tároló beállításainak eléréséhez. Ez a példa létrehoz egy beállítást, amelynek neve exampleSetting.

// Simple setting

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

A beállítás lekéréséhez ugyanazt az ApplicationDataContainer.Values tulajdonságot használja, amelyet a beállítás létrehozásához használt. Ez a példa bemutatja, hogyan kérhető le az imént létrehozott beállítás.

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

Helyi összetett érték létrehozása és lekérése

Összetett érték létrehozásához vagy írásához hozzon létre egy ApplicationDataCompositeValue objektumot. Ez a példa létrehoz egy elnevezett exampleCompositeSetting összetett beállítást, és hozzáadja azt a localSettings tárolóhoz.

// Composite setting

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

localSettings.Values["exampleCompositeSetting"] = composite;

Ez a példa bemutatja, hogyan kérhető le az imént létrehozott összetett érték.

// 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"]
}

Helyi fájl létrehozása és olvasása

Ha a helyi alkalmazásadattárban szeretne fájlt létrehozni és frissíteni, használja a fájl API-jait, például Windows. Storage.StorageFolder.CreateFileAsync és Windows. Storage.FileIO.WriteTextAsync. Ez a példa létrehoz egy, a dataFile.txt tárolóban elnevezett localFolder fájlt, és az aktuális dátumot és időt a fájlba írja. A ReplaceExisting érték a CreationCollisionOption felsorolásban azt jelenti, hogy a fájlt ki kell cserélni, ha az már létezik.

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

Ha meg szeretne nyitni és olvasni egy fájlt a helyi alkalmazásadattárban, használja a fájl API-jait, például Windows. Storage.StorageFolder.GetFileAsync, Windows. Storage.StorageFile.GetFileFromApplicationUriAsync és Windows. Storage.FileIO.ReadTextAsync. Ez a példa megnyitja az dataFile.txt előző lépésben létrehozott fájlt, és beolvassa a dátumot a fájlból. A fájlerőforrások különböző helyekről való betöltéséről a Fájlerőforrások betöltése című témakörben olvashat bővebben.

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

Roamingadatok

Figyelmeztetés

A roaming-adatok és -beállítások nem támogatottak a Windows 11 óta. Az ajánlott csere Azure App Service. Azure App Service széles körben támogatott, jól dokumentált, megbízható, és támogatja a platformfüggetlen/ökoszisztémák közötti forgatókönyveket, például az iOS-t, az Androidot és a webet.

Fontos

Előfordulhat, hogy a RoamingSettings adatok nem maradnak meg a Microsoft Store alkalmazásfrissítéseken keresztül, még Windows 10 alatt sem. Az alkalmazásfrissítéseket túlélő beállításokhoz használja inkább a LocalSettingst .

Ideiglenes alkalmazásadatok

Az ideiglenes alkalmazásadattár gyorsítótárként működik. A fájlok nem kóborolnak, és bármikor eltávolíthatók. A rendszerkarbantartási feladat bármikor automatikusan törölheti az ezen a helyen tárolt adatokat. A felhasználó a Lemezkarbantartás funkcióval az ideiglenes adattárból is törölhet fájlokat. Az ideiglenes alkalmazásadatok felhasználhatók ideiglenes adatok tárolására az alkalmazás munkamenete során. Nincs garancia arra, hogy ezek az adatok az alkalmazás munkamenetének végéig megmaradnak, mivel a rendszer szükség esetén visszanyerheti a felhasznált területet. A hely az ideiglenesFolder tulajdonságon keresztül érhető el.

Az ideiglenes adattároló lekérése

A fájlok lekéréséhez használja az ApplicationData.TemporaryFolder tulajdonságot. A következő lépések az ebből a lépésből származó változót temporaryFolder használják.

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

Ideiglenes fájlok létrehozása és olvasása

Ha az ideiglenes alkalmazás adattárában szeretne fájlt létrehozni és frissíteni, használja a fájl API-jait, például Windows. Storage.StorageFolder.CreateFileAsync és Windows. Storage.FileIO.WriteTextAsync. Ez a példa létrehoz egy, a dataFile.txt tárolóban elnevezett temporaryFolder fájlt, és az aktuális dátumot és időt a fájlba írja. A ReplaceExisting érték a CreationCollisionOption felsorolásban azt jelenti, hogy a fájlt ki kell cserélni, ha az már létezik.

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

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

Ha meg szeretne nyitni és olvasni egy fájlt az ideiglenes alkalmazás adattárában, használja a fájl API-jait, például Windows. Storage.StorageFolder.GetFileAsync, Windows. Storage.StorageFile.GetFileFromApplicationUriAsync és Windows. Storage.FileIO.ReadTextAsync. Ez a példa megnyitja az dataFile.txt előző lépésben létrehozott fájlt, és beolvassa a dátumot a fájlból. A fájlerőforrások különböző helyekről való betöltéséről a Fájlerőforrások betöltése című témakörben olvashat bővebben.

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

Alkalmazásadatok rendszerezése tárolókkal

Az alkalmazásadatok beállításainak és fájljainak rendszerezéséhez a címtárak közvetlen használata helyett tárolókat (ApplicationDataContainer objektumokat) hozhat létre. Tárolókat adhat hozzá a helyi, a roaming- és az ideiglenes alkalmazásadattárakhoz. A tárolók legfeljebb 32 szint mélyre ágyazhatók.

Beállítástároló létrehozásához hívja meg az ApplicationDataContainer.CreateContainer metódust . Ez a példa létrehoz egy névvel ellátott exampleContainer helyi beállítástárolót, és hozzáad egy névvel ellátott exampleSettingbeállítást. A Always értéke a ApplicationDataCreateDisposition felsorolásból arra utal, hogy a tároló akkor jön létre, ha még nem létezik.

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

Alkalmazásbeállítások és tárolók törlése

Ha törölni szeretne egy egyszerű beállítást, amire az alkalmazásnak már nincs szüksége, használja az ApplicationDataContainerSettings.Remove metódust . Ez a példa törli a exampleSetting korábban létrehozott helyi beállítást.

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

Összetett beállítás törléséhez használja az ApplicationDataCompositeValue.Remove metódust. Ez a példa törli a korábbi példában létrehozott helyi exampleCompositeSetting összetett beállítást.

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

Tároló törléséhez hívja meg az ApplicationDataContainer.DeleteContainer metódust . Ez a példa törli a korábban létrehozott helyi exampleContainer beállítástárolót.

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

// Delete container

localSettings.DeleteContainer("exampleContainer");

Alkalmazásadatok verziószámozása

Az alkalmazás adatait igény szerint verziózhatja. Ez lehetővé teszi az alkalmazás olyan jövőbeli verziójának létrehozását, amely anélkül módosítja az alkalmazás adatainak formátumát, hogy kompatibilitási problémákat okozna az alkalmazás előző verziójával. Az alkalmazás ellenőrzi az alkalmazásadatok verzióját az adattárban, és ha a verzió kisebb az alkalmazás által vártnál, az alkalmazásnak frissítenie kell az alkalmazás adatait az új formátumra, és frissítenie kell a verziót. További információkért tekintse meg az ApplicationData.Version tulajdonságot és az ApplicationData.SetVersionAsync metódust.