Isolerad lagring används för att lagra lokala data på en Windows Phone. Det är "isolerat" eftersom andra program inte kan komma åt dessa data. I den här handledningen får du en översikt över isolerad lagring och lär dig hur du kan använda den för att spara data mer säkert på Windows Phone 8.
Den mobila arkitekturen för isolerad lagring liknar Silverlight-baserade program på Windows. Alla I / O-operationer är begränsade till isolerad lagring och har inte direkt tillgång till det underliggande operativsystemet, vilket bidrar till att tillhandahålla säkerhet och förhindrar obehörig åtkomst och datakorruption från andra appar. Om du vill dela data mellan två program behöver du någon form av molnbaserad tjänst som kan dela den data åt dig.
Den lokala mappen är rotmappen i appens databutik. Det finns två sätt att lagra data lokalt. Det första sättet är genom en samling namn / värdepar som heter IsolatedStorageSettings
. Å andra sidan är det genom att skapa faktiska filer och mappar som heter IsolatedStorageFile
. Här är några saker som är värda att nämna om isolerad lagring:
IsolatedStoragePermission
objekt.IsolatedStorageException
undantag kastas.IsolatedStorageFilePermission
beslutar om att ge tillstånd till filen eller katalogen. Använd isostore
eller ms-appdata
URI-ordningsnamn när adressering av den lokala mappen i en sökväg. Båda dessa URI-system låter dig komma åt den lokala mappen, men de kan inte användas omväxlande. ms-appdata
används för att adressera roten till den lokala mappen med API, medan isostore
används för att adressera roten till den lokala mappen. Följande exempel visar detta.
// Skapa en lokal databas i den lokala mappen med isostore URI-schemat. MyDataContext db = ny MyDataContext ("isostore: /mydb.sdf"); // Hämta en fil från den lokala mappen med ms-appdata URI-schemat. var fil = väntar på Windows.StorageFile.GetFileFromApplicationUriAsync (ny Uri ("ms-appdata: ///local/AppConfigSettings.xml"));
ms-appdata
kräver tre snedstreck (///
) och isostore
kräver bara en snedstreck (/
). Banans totala längd för något av de två URI-scheman kan inte överstiga 185 tecken.
IsolatedStorageSettings
Det enklaste sättet att sätta data i isolerat lagringsutrymme är att använda IsolatedStorageSettings
klass, vilken är en Ordbok
som lagrar nyckelvärdespar i isolerad lagring. IsolatedStorageSettings
används vanligtvis för att spara inställningar, till exempel antalet bilder som ska visas per sida, sidlayoutalternativ och så vidare. Den data som sparas i IsolatedStorageSettings
fortsätter över applikationslanseringar.
Om du bara vill lagra inställningsinformation som Användarnamn = "Fred"
, då kan du använda Applikationsinställningar
föremål i isolerad förvaring. Den används på samma sätt som du skulle använda en ordlista. De saveString
Metoden kan användas för att spara ett strängvärde meddelande
för nyckeln namn
.
void saveString (strängmeddelande, strängnamn) IsolatedStorageSettings.ApplicationSettings [name] = message; IsolatedStorageSettings.ApplicationSettings.Save ();
Lagringen fungerar som en ordbok, men kom ihåg att ringa Spara
när du är klar med att lägga till nycklar.
För att hämta värden från inställningar kan du använda loadstring
metod som tar nyckeln till de sparade inställningarna som en parameter och returnerar värdet om nyckeln finns.
string string (string name) if (IsolatedStorageSettings.ApplicationSettings.Contains (name)) return (string) IsolatedStorageSettings.ApplicationSettings [name]; annars return null;
Testa om nyckeln finns innan du försöker hitta den. Om du försöker få värdet för en nyckel som inte finns kommer ett undantag att kastas.
En bra övning är att skapa en särskild statisk klass, som innehåller programmets inställningar. Detta gör det enkelt att komma åt någon egenskap i din ansökan när som helst.
Om du arbetar med ett Universal Windows-appprojekt använder du sedan IsolatedStorageSettings.ApplicationSettings
kommer att ge ett syntaxfel. Du måste ersätta den med Windows.Storage.ApplicationData.Current.LocalSettings
.
IsolatedStorageFile
IsolatedStorageFile
är den mekanism som du kan använda för att lagra filer på en användares enhet. Du kan utföra olika operationer på det isolerade lagret, till exempel skapa mappar och filer, skriva till en fil, läsa data, ta bort filer, etc..
Dessa filer och mappar är inte tillgängliga för andra program som är installerade på användarens enhet. De IsolatedStorageFileStream
klassen används för att läsa, skriva och skapa filer i separat lagring. Denna klass sträcker sig Filestream
, vilket innebär att du kan använda en förekomst av IsolatedStorageFileStream
i de flesta situationer där a Filestream
Exempel skulle annars kunna användas, till exempel att konstruera en Stream
eller Stream
.
I följande kodfragment visas hur du skriver till en fil i en separat lagring. De saveGameToIsolatedStorage
funktion skapar en ny fil i isolerad lagring och sparar strängen meddelande
i det.
privata void saveGameToIsolatedStorage (strängmeddelande) using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) använder (IsolatedStorageFileStream rawStream = isf.CreateFile ("MyFile.store")) StreamWriter writer = new StreamWriter (rawStream); writer.WriteLine (message); // spara meddelandet writer.Close ();
De loadstring
funktionen läser och returnerar texten i filen. Funktionen använder Fil existerar
För att först kontrollera om filen finns i isolerat lagringsutrymme. Det använder sedan en instans av Stream
att läsa filen.
privatsträngbelastningsträng () strängresultat = null; IsolatedStorageFileStreamFile.GetUserStoreForApplication ()) if (isf.FileExists ("Myfile.store") använder (IsolatedStorageFileStream rawStream = isf.OpenFile (filnamn, System.IO.FileMode.Open)) StreamReader Reader = new StreamReader (rawStream); result = reader.ReadLine (); reader.Close (); returresultat;
Isolerad lagring är inte tillgänglig för Windows Store-appar. Använd istället programdataklasserna i Windows.Storage
namnområden som ingår i Windows Runtime API för att lagra lokala data och filer.
Det rekommenderas att bortskaffa förekomsten av IsolatedStorageFile
och IsolatedStorageFileStream
när de inte längre behövs. De använder sig av
uttalande anses detta automatiskt för dig och dess användning som en god praxis.
För att skriva över innehållet i en befintlig fil, använd en instans av Stream
klass för att öppna filen. Parametrarna FileMode.Open
och FileAccess.Write
skickas för att öppna filen med skrivåtkomst. Detta kommer att skriva över det befintliga innehållet med nya data.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); om (myIsolatedStorage.FileExists (filnamn)) using (StreamWriter writeFile = new StreamWriter (nya IsolatedStorageFileStream (filnamn, FileMode.Open, FileAccess.Write, myIsolatedStorage))) string someTextData = "Lär dig att koda med Tuts +"; writeFile.WriteLine (someTextData); writeFile.Close ();
Att lägga till data i en befintlig fil liknar mycket som skrivdata till en befintlig fil. Den enda förändring som behövs är att ställa in filläge till FileMode.APPEND
.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (filnamn)) if (myIsolatedStorage.FileExists (filnamn)) using (StreamWriter writeFile = new StreamWriter (nya IsolatedStorageFileStream (filnamn, FileMode.Append, FileAccess.Write, myIsolatedStorage))) string someTextData = " Använd Tuts + för att lära dig kreativa färdigheter, form din framtid "; writeFile.WriteLine (someTextData); writeFile.Close ();
För att radera en textfil kontrollerar vi först om textfilen finns i ett separat lagringsutrymme och sedan använder Radera fil
för att radera filen.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); om (myIsolatedStorage.FileExists (filnamn)) myIsolatedStorage.DeleteFile (filnamn);
Jag uppmanar dig att utforska provanvändningen av denna handledning för att se hur man läser, skriver och lägger till data i en fil.
När du felsöker en ansökan kan du behöva kolla de filer och mappar som sparats i din apps isolerade lagring för att verifiera att rätt filer sparas på rätt plats. Emulatorer och enheter som kör Windows Phone 8 eller senare kan använda Windows Phone Power Tools, vilket är ett GUI-baserat verktyg för att komma åt den isolerade lagringen av appar.
Ett annat alternativ är att använda Isolerad Storage Explorer eller ISETool, ett kommandoradsverktyg installerat tillsammans med Windows Phone SDK. Du kan använda ISETool för att lista, kopiera och ersätta filer och kataloger i din App: s lokala mapp.
ISETool kan användas med någon enhet eller emulator, och installeras vanligen på följande plats:
Program Files (x86) \ MicrosoftSDKs \ Windows \ v8.0 \ Tools \ IsolatedStorageExplorerTool
Här är några saker som är värda att notera när du använder ISETool:
IsolatedStorageSettings
klass med ISETool.För att använda ISETool måste du använda följande syntax:
ISETool.exe[ ]
Här är några saker som kan göras med hjälp av ISETool.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ myfiles
Upprepa de tre föregående stegen och använd följande kommando för att ersätta filer i appens isolerade lagring.
ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba "C: \ Data \ Mina filer"
Om du vill lära dig mer om ISETool, föreslår jag att du läser en annan artikel som jag skrev om användningen av ISETool.
Vi har två enkla mekanismer tillgängliga på Windows Phone, IsolatedStorageSettings
och IsolatedStorageFile
. Isolerad lagring representerar en lagringsyta som innehåller filer och kataloger som inte kan nås av andra applikationer. Isolerad lagring är användbar i många situationer. Ta gärna hämta källkursfilerna för handledningen för att använda som referens.