Geïsoleerde opslag wordt gebruikt om lokale gegevens op een Windows Phone op te slaan. Het is "geïsoleerd" omdat andere applicaties geen toegang hebben tot deze gegevens. In deze tutorial krijgt u een overzicht van geïsoleerde opslag en leert u hoe u deze kunt gebruiken om gegevens veiliger op te slaan op Windows Phone 8.
De mobiele architectuur van geïsoleerde opslag is vergelijkbaar met de op Silverlight gebaseerde applicaties op Windows. Alle I / O-bewerkingen zijn beperkt tot geïsoleerde opslag en hebben geen directe toegang tot het onderliggende OS-bestandssysteem, wat helpt om beveiliging te bieden en ongeautoriseerde toegang en gegevenscorruptie door andere apps voorkomt. Als u gegevens tussen twee toepassingen wilt delen, hebt u een soort cloudservice nodig die deze gegevens voor u kan delen.
De lokale map is de hoofdmap van de gegevensopslag van uw app. Er zijn twee manieren om gegevens lokaal op te slaan. De eerste manier is via een verzameling naam / waarde-paren genaamd IsolatedStorageSettings
. De andere manier is door het creëren van werkelijke bestanden en mappen genoemd IsolatedStorageFile
. Hier zijn een paar dingen die het vermelden waard zijn over geïsoleerde opslag:
IsolatedStoragePermission
voorwerpen.IsolatedStorageException
uitzondering wordt gegooid.IsolatedStorageFilePermission
beslist of toestemming wordt gegeven voor het bestand of de map. Gebruik de isostore
of ms-appdata
URI-schema-namen bij het adresseren van de lokale map in een pad. Beide URI-schema's geven u toegang tot de lokale map, maar ze kunnen niet onderling uitwisselbaar worden gebruikt. ms-appdata
wordt gebruikt om de hoofdmap van de lokale map met API's aan te pakken, terwijl isostore
wordt gebruikt om de hoofdmap van de lokale map te adresseren. Het volgende voorbeeld laat dit zien.
// Maak een lokale database in de lokale map met het isostore-URI-schema. MyDataContext db = nieuwe MyDataContext ("isostore: /mydb.sdf"); // Haal een bestand op uit de lokale map met het ms-appdata URI-schema. var file = await Windows.StorageFile.GetFileFromApplicationUriAsync (new Uri ("ms-appdata: ///local/AppConfigSettings.xml"));
ms-appdata
vereist drie schuine strepen (///
) en isostore
vereist slechts één schuine streep (/
). De totale lengte van het pad voor een van de twee URI-schema's mag niet langer zijn dan 185 tekens.
IsolatedStorageSettings
De eenvoudigste manier om gegevens in geïsoleerde opslag te plaatsen, is door de IsolatedStorageSettings
klasse, dat is een Woordenboek
die sleutel / waarde-paren opslaat in geïsoleerde opslag. IsolatedStorageSettings
wordt meestal gebruikt om instellingen op te slaan, zoals het aantal afbeeldingen dat per pagina wordt weergegeven, opties voor paginalay-out, enzovoort. De gegevens die zijn opgeslagen in IsolatedStorageSettings
blijft bestaan bij het starten van applicaties.
Als u alleen instellingen wilt opslaan zoals Gebruikersnaam = "Fred"
, dan kun je de gebruiken Applicatie instellingen
object in geïsoleerde opslag. Het wordt op dezelfde manier gebruikt als een woordenboek. De saveString
methode kan worden gebruikt om een reekswaarde op te slaan bericht
voor de sleutel naam
.
void saveString (tekenreeksbericht, tekenreeksnaam) IsolatedStorageSettings.ApplicationSettings [name] = bericht; IsolatedStorageSettings.ApplicationSettings.Save ();
De opslag werkt als een woordenboek, maar vergeet niet te bellen Opslaan
wanneer u klaar bent met het toevoegen van sleutels.
Als u waarden uit instellingen wilt ophalen, gebruikt u de loadString
methode die de sleutel van de opgeslagen instellingen als een parameter neemt en de waarde retourneert als de sleutel bestaat.
string loadString (string naam) if (IsolatedStorageSettings.ApplicationSettings.Contains (name)) return (string) IsolatedStorageSettings.ApplicationSettings [name]; else return null;
Test of de sleutel bestaat voordat u hem probeert te vinden. Als u probeert de waarde te krijgen voor een sleutel die niet bestaat, wordt een uitzondering gegenereerd.
Een goede gewoonte is om een speciale statische klasse te maken die de instellingen van uw toepassing bevat. Dit maakt het gemakkelijk om op elk moment toegang te krijgen tot alle eigendommen in uw toepassing.
Als u aan een Universal Windows-app-project werkt en vervolgens gebruikt IsolatedStorageSettings.ApplicationSettings
geeft een syntaxisfout. U moet het vervangen Windows.Storage.ApplicationData.Current.LocalSettings
.
IsolatedStorageFile
IsolatedStorageFile
is het mechanisme dat u kunt gebruiken om bestanden op het apparaat van een gebruiker op te slaan. U kunt verschillende bewerkingen uitvoeren op de geïsoleerde opslag, zoals het maken van mappen en bestanden, schrijven naar een bestand, lezen van gegevens, verwijderen van bestanden, enz.
Deze bestanden en mappen zijn niet toegankelijk voor andere applicaties die op het apparaat van de gebruiker zijn geïnstalleerd. De IsolatedStorageFileStream
class wordt gebruikt voor het lezen, schrijven en maken van bestanden in geïsoleerde opslag. Deze klasse breidt zich uit Bestandsstroom
, wat betekent dat je een instantie van kunt gebruiken IsolatedStorageFileStream
in de meeste situaties waar a Bestandsstroom
instantie anders zou kunnen worden gebruikt, zoals om een te bouwen StreamReader
of StreamWriter
.
In het volgende codefragment ziet u hoe u naar een bestand schrijft in geïsoleerde opslag. De saveGameToIsolatedStorage
functie maakt een nieuw bestand aan in geïsoleerde opslag en slaat de reeks op bericht
in het.
private void saveGameToIsolatedStorage (tekenreeksbericht) using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) using (IsolatedStorageFileStream rawStream = isf.CreateFile ("MyFile.store")) StreamWriter writer = new StreamWriter (rawStream); writer.WriteLine (bericht); // sla de berichtschrijver op.Sluit ();
De loadString
functie leest en retourneert de tekst in het bestand. De functie gebruikt Bestand bestaat
om eerst te controleren of het bestand bestaat in geïsoleerde opslag. Het gebruikt dan een instantie van StreamReader
om het bestand te lezen.
private string loadString () stringresultaat = null; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) if (isf.FileExists ("Myfile.store") using (IsolatedStorageFileStream rawStream = isf.OpenFile (bestandsnaam, System.IO.FileMode.Open)) StreamReader-reader = nieuw StreamReader (rawStream); result = reader.ReadLine (); reader.Close (); retourneer resultaat;
Geïsoleerde opslag is niet beschikbaar voor Windows Store-apps. Gebruik in plaats daarvan de toepassingsgegevensklassen in de Windows.Storage
naamruimten opgenomen in de Windows Runtime API om lokale gegevens en bestanden op te slaan.
Het wordt aanbevolen om de instanties van IsolatedStorageFile
en IsolatedStorageFileStream
wanneer ze niet langer nodig zijn. De gebruik makend van
verklaring doet dit automatisch voor u en het gebruik ervan wordt als een goede gewoonte beschouwd.
Om de inhoud van een bestaand bestand te overschrijven, gebruikt u een exemplaar van de StreamWriter
klasse om het bestand te openen. De parameters FileMode.Open
en FileAccess.Write
worden doorgegeven om het bestand te openen met schrijftoegang. Hierdoor wordt de bestaande inhoud met nieuwe gegevens overschreven.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (bestandsnaam)) using (StreamWriter writeFile = nieuwe StreamWriter (nieuwe IsolatedStorageFileStream (bestandsnaam, FileMode.Open, FileAccess.Write, myIsolatedStorage))) string someTextData = "Leer coderen met Tuts +"; writeFile.WriteLine (someTextData); writeFile.Close ();
Gegevens toevoegen aan een bestaand bestand lijkt veel op het schrijven van gegevens naar een bestaand bestand. De enige verandering die nodig is, is het instellen van de bestandsmodus op FileMode.APPEND
.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (filename)) if (myIsolatedStorage.FileExists (bestandsnaam)) using (StreamWriter writeFile = nieuwe StreamWriter (nieuwe IsolatedStorageFileStream (bestandsnaam, FileMode.Append, FileAccess.Write, myIsolatedStorage))) string someTextData = " Gebruik Tuts + om creatieve vaardigheden te leren, uw toekomst vorm te geven "; writeFile.WriteLine (someTextData); writeFile.Close ();
Om een tekstbestand te verwijderen, controleren we eerst of het tekstbestand in geïsoleerde opslag bestaat en vervolgens gebruiken Verwijder bestand
om het bestand te verwijderen.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (filename)) myIsolatedStorage.DeleteFile (bestandsnaam);
Ik raad u aan de voorbeeldtoepassing van deze zelfstudie te verkennen om te zien hoe u gegevens in een bestand kunt lezen, schrijven en toevoegen.
Bij het debuggen van een toepassing moet u mogelijk de bestanden en mappen controleren die in de geïsoleerde opslag van uw app zijn opgeslagen om te controleren of de juiste bestanden op de juiste locatie worden opgeslagen. Emulators en apparaten met Windows Phone 8 of lager kunnen gebruikmaken van Windows Phone Power Tools, een op GUI's gebaseerde tool voor toegang tot de geïsoleerde opslag van apps.
Een andere optie is het gebruik van de Geïsoleerde opslagverkenner of ISETool, een opdrachtregelhulpprogramma geïnstalleerd samen met de Windows Phone SDK. U kunt ISETool gebruiken om bestanden en mappen in de lokale map van uw app weer te geven, te kopiëren en te vervangen.
ISETool kan met elk apparaat of elke emulator worden gebruikt en wordt meestal op de volgende locatie geïnstalleerd:
Program Files (x86) \ MicrosoftSDKs \ WindowsPhone \ v8.0 \ Tools \ IsolatedStorageExplorerTool
Hier zijn een paar dingen die het vermelden waard zijn tijdens het gebruik van ISETool:
IsolatedStorageSettings
klasse met ISETool.Als u ISETool wilt gebruiken, moet u de volgende syntaxis gebruiken:
ISETool.exe[ ]
Hier zijn een paar dingen die gedaan kunnen worden met ISETool.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ mijnbestanden
Herhaal de voorgaande drie stappen en gebruik de volgende opdracht om bestanden in de geïsoleerde opslag van de app te vervangen.
ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba "C: \ Data \ Mijn bestanden"
Als u meer wilt weten over de ISETool, raad ik u aan een ander artikel te lezen dat ik schreef over het gebruik van de ISETool.
We hebben twee eenvoudige mechanismen beschikbaar op Windows Phone, IsolatedStorageSettings
en IsolatedStorageFile
. Geïsoleerde opslag vertegenwoordigt een opslaggebied dat bestanden en mappen bevat die niet toegankelijk zijn voor andere applicaties. Geïsoleerde opslag is in veel situaties nuttig. Download de bronbestanden van de zelfstudie om te gebruiken als referentie.