Arbeta med isolerad lagring på Windows Phone 8

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:

  • Isolerad lagring använder tillståndskvoter, vilka är lagringsgränser som fastställs av IsolatedStoragePermission objekt.
  • Om du försöker skriva data som överstiger kvoten, an IsolatedStorageException undantag kastas.
  • IsolatedStorageFilePermission beslutar om att ge tillstånd till filen eller katalogen. 

1. URI-system

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.

2. 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.

3. 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.

Skriva till en fil 

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

Läser från en fil

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.

Skriva till en befintlig fil

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

Lägger till en befintlig fil

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

Ta bort en textfil

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.

4. Isolerad Storage Explorer

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:

  • Appen måste installeras på emulatorn eller enheten.
  • Emulatorn eller enheten måste vara upplåst, men appen behöver inte köras.
  • Du kan inte komma åt den isolerade lagringen av appar installerade från Windows Phone Store.
  • Du kan inte visa inställningar som lagrats med hjälp av 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.

Kopiera filer från isolerad lagring till dator

  1. Installera appen du vill testa till emulatorn eller en enhet och skapa lokala filer och kataloger. 
  2. Hämta app-id från Serienummer attribut av appelementet i WMAppManifest.xml fil.
  3. Navigera till ISETool.exe använd kommandotolken och kör följande kommando för att kopiera alla filer från appens isolerade lagring till din dator.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ myfiles

Byta filer i isolerad lagring

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.

Slutsats

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.