Arbeider med isolert lagring på Windows Phone 8

Isolert lagring brukes til å lagre lokale data på en Windows Phone. Det er "isolert" fordi andre applikasjoner ikke har tilgang til disse dataene. I denne opplæringen får du en oversikt over isolert lagringsplass og lær hvordan du kan bruke den til å lagre data mer sikkert på Windows Phone 8.

Den mobile arkitekturen for isolert lagring ligner Silverlight-baserte applikasjoner på Windows. Alle I / O-operasjoner er begrenset til isolert lagring og har ikke direkte tilgang til det underliggende OS-filsystemet, noe som bidrar til å gi sikkerhet og forhindrer uautorisert tilgang og dataforstyrrelser fra andre apper. Hvis du vil dele data mellom to programmer, trenger du en slags skybasert tjeneste som kan dele dataene for deg. 

Den lokale mappen er rotmappen til appens datalager. Det er to måter å lagre data lokalt på. Den første måten er gjennom en samling av navn / verdi par kalt IsolatedStorageSettings. Den andre veien er gjennom opprettelsen av faktiske filer og mapper som heter IsolatedStorageFile. Her er noen ting verdt å nevne om isolert lagring:

  • Isolert lagring bruker tillatskvoter, som er lagringsgrenser fastsatt av IsolatedStoragePermission objekter.
  • Hvis du prøver å skrive data som overstiger kvoten, an IsolatedStorageException unntak kastes.
  • IsolatedStorageFilePermission bestemmer om å gi tillatelse til filen eller katalogen. 

1. URI-ordninger

Bruke isostore eller ms-appdata URI-systemnavn når du adresserer den lokale mappen i en bane. Begge disse URI-ordningene gir deg tilgang til den lokale mappen, men de kan ikke brukes om hverandre. ms-appdata brukes til å adressere roten til den lokale mappen med APIer, mens isostore brukes til å adressere roten til den lokale mappen. Følgende eksempel demonstrerer dette. 

// Opprett en lokal database i den lokale mappen med isostore URI-ordningen. MyDataContext db = ny MyDataContext ("isostore: /mydb.sdf"); // Hent en fil fra den lokale mappen med ms-appdata URI-ordningen. var file = avvente Windows.StorageFile.GetFileFromApplicationUriAsync (ny Uri ("ms-appdata: ///local/AppConfigSettings.xml"));

ms-appdata krever tre skråstreker (///) og isostore krever bare ett skråstrek (/). Den totale lengden på banen for noen av de to URI-ordningene kan ikke overstige 185 tegn.

2. IsolatedStorageSettings

Den enkleste måten å sette data i isolert lagring er å bruke IsolatedStorageSettings klassen, som er en Ordbok som lagrer nøkkelverdige par i isolert lagring. IsolatedStorageSettings brukes vanligvis til å lagre innstillinger, for eksempel antall bilder som skal vises per side, alternativer for sidelayout og så videre. Dataene lagret i IsolatedStorageSettings fortsetter på tvers av programlanseringer.

Hvis du bare vil lagre innstillingsinformasjon som Brukernavn = "Fred", så kan du bruke Applikasjon innstillinger objekt i isolert lagring. Den brukes på samme måte som du ville bruke en ordbok. De saveString Metoden kan brukes til å lagre en strengverdi budskap for nøkkelen Navn.

void saveString (strengmelding, strengnavn) IsolatedStorageSettings.ApplicationSettings [name] = message; IsolatedStorageSettings.ApplicationSettings.Save (); 

Lagringen fungerer som en ordbok, men husk å ringe Lagre når du er ferdig med å legge til nøkler.

For å hente verdier fra innstillinger, kan du bruke loadString metode som tar nøkkelen til de lagrede innstillingene som en parameter og returnerer verdien hvis nøkkelen eksisterer.

string loadString (strengnavn) if (IsolatedStorageSettings.ApplicationSettings.Contains (navn)) return (string) IsolatedStorageSettings.ApplicationSettings [name];  ellers return null;  

Test om nøkkelen eksisterer før du prøver å finne den. Hvis du prøver å få verdien for en nøkkel som ikke eksisterer, vil et unntak kastes.

En god praksis er å lage en spesiell statisk klasse, som inneholder programmets innstillinger. Dette gjør det enkelt å få tilgang til enhver eiendom i søknaden din når som helst.

Hvis du jobber med et Universal Windows app-prosjekt, bruker du IsolatedStorageSettings.ApplicationSettings vil gi en syntaksfeil. Du må erstatte den med Windows.Storage.ApplicationData.Current.LocalSettings.

3. IsolatedStorageFile

IsolatedStorageFile er mekanismen som du kan bruke til å lagre filer på en brukers enhet. Du kan utføre ulike operasjoner på den isolerte lagringen, for eksempel å lage mapper og filer, skrive til en fil, lese data, fjerne filer osv..

Disse filene og mappene er ikke tilgjengelige for andre programmer installert på brukerens enhet. De IsolatedStorageFileStream klassen brukes til å lese, skrive og lage filer i isolert lagring. Denne klassen strekker seg Filestream, som betyr at du kan bruke en forekomst av IsolatedStorageFileStream i de fleste situasjoner hvor a Filestream Eksempel kan ellers brukes, for eksempel å konstruere en StreamReader eller Stream.

Skrive til en fil 

Følgende kodestykke viser deg hvordan du skriver til en fil i isolert lagring. De saveGameToIsolatedStorage funksjonen lager en ny fil i isolert lagring og lagrer strengen budskap i det.

private void saveGameToIsolatedStorage (strengmelding) using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) bruker (IsolatedStorageFileStream rawStream = isf.CreateFile ("MyFile.store")) StreamWriter writer = new StreamWriter (rawStream); writer.WriteLine (melding); // lagre meldingen writer.Close ();  

Lesing fra en fil

De loadString funksjonen leser og returnerer teksten i filen. Funksjonen bruker Filen eksisterer For å først sjekke om filen finnes i isolert lagring. Det bruker så en forekomst av StreamReader å lese filen.

privat streng loadString () string result = null; bruker (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) if (isf.FileExists ("Myfile.store") bruker (IsolatedStorageFileStream rawStream = isf.OpenFile (filnavn, System.IO.FileMode.Open)) StreamReader Reader = new StreamReader (rawStream); result = reader.ReadLine (); reader.Close (); returresultat; 

Isolert lagring er ikke tilgjengelig for Windows Store-apper. I stedet bruker du programdata klassene i Windows.Storage namespaces inkludert i Windows Runtime API for å lagre lokale data og filer.

Det anbefales å disponere forekomstene av IsolatedStorageFile og IsolatedStorageFileStream når de ikke lenger er nødvendig. De ved hjelp av uttalelse gjør dette automatisk for deg og dets bruk som en god praksis.

Skriver til en eksisterende fil

For å overskrive innholdet i en eksisterende fil, bruk en forekomst av Stream klasse for å åpne filen. Parametrene FileMode.Open og FileAccess.Write blir sendt for å åpne filen med skriveadgang. Dette vil overskrive eksisterende innhold med nye data.

IsolatedStorageFile myIsolatedStorage = IsolertStorageFile.GetUserStoreForApplication (); hvis (myIsolatedStorage.FileExists (filnavn)) using (StreamWriter writeFile = new StreamWriter (new IsolatedStorageFileStream (filnavn, FileMode.Open, FileAccess.Write, myIsolatedStorage))) string someTextData = "Lær å kode ved hjelp av Tuts +"; writeFile.WriteLine (someTextData); writeFile.Close (); 

Legge til en eksisterende fil

Hvis du legger til data i en eksisterende fil, ligner det meget på å skrive data til en eksisterende fil. Den eneste endringen som trengs er å sette filmodus til FileMode.Append.

IsolatedStorageFile myIsolatedStorage = IsolertStorageFile.GetUserStoreForApplication (); hvis (myIsolatedStorage.FileExists (filnavn)) if (myIsolatedStorage.FileExists (filnavn)) using (StreamWriter writeFile = new StreamWriter (nye IsolatedStorageFileStream (filnavn, FileMode.Append, FileAccess.Write, myIsolatedStorage))) string someTextData = " Bruk Tuts + for å lære kreative ferdigheter, form din fremtid "; writeFile.WriteLine (someTextData); writeFile.Close ();  

Slette en tekstfil

For å slette en tekstfil, kontrollerer vi først om tekstfilen finnes i isolert lagring og bruk deretter Slett fil for å slette filen.

IsolatedStorageFile myIsolatedStorage = IsolertStorageFile.GetUserStoreForApplication (); hvis (myIsolatedStorage.FileExists (filnavn)) myIsolatedStorage.DeleteFile (filnavn); 

Jeg oppfordrer deg til å utforske prøveapplikasjonen for denne opplæringen for å se hvordan du leser, skriver og legger til data i en fil.

4. Isolert Storage Explorer

Mens du feilsøker et program, kan det hende du må sjekke filene og mappene som er lagret i appens isolerte lagring for å kontrollere at de riktige filene blir lagret på riktig sted. Emulatorer og enheter som kjører Windows Phone 8 eller lavere, kan bruke Windows Phone Power Tools, som er et GUI-basert verktøy for tilgang til den isolerte lagringen av apper.

Et annet alternativ er å bruke Isolert Storage Explorer eller ISETool, et kommandolinjeverktøy installert sammen med Windows Phone SDK. Du kan bruke ISETool til å liste, kopiere og erstatte filer og kataloger i appens lokale mappe.

ISETool kan brukes med en hvilken som helst enhet eller emulator, og installeres vanligvis på følgende sted:

Program Files (x86) \ MicrosoftSDKs \ Windows Phone \ v8.0 \ Tools \ IsolatedStorageExplorerTool

Her er noen ting verdt å merke seg når du bruker ISETool:

  • Appen må være installert på emulatoren eller enheten.
  • Emulatoren eller enheten må være låst opp, men appen må ikke løpe.
  • Du kan ikke få tilgang til den isolerte lagringen av apper som er installert fra Windows Phone Store.
  • Du kan ikke vise innstillinger lagret ved hjelp av IsolatedStorageSettings klasse ved hjelp av ISETool.

For å bruke ISETool må du bruke følgende syntaks:

ISETool.exe    []

Her er et par ting som kan gjøres ved hjelp av ISETool.

Kopiere filer fra isolert lagring til datamaskin

  1. Distribuer appen du vil teste til emulatoren eller en enhet, og opprett lokale filer og kataloger. 
  2. Få app-IDen fra Produkt ID attributt for appelementet i WMAppManifest.xml fil.
  3. Navigere til ISETool.exe bruker kommandoprompten, og kjør følgende kommando for å kopiere alle filene fra appens isolerte lagring til datamaskinen.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ myfiles

Bytte filer i isolert lagring

Gjenta de tre foregående trinnene, og bruk følgende kommando for å erstatte filer i appens isolerte lagring.

ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba "C: \ Data \ Mine filer"

Hvis du vil lære mer om ISETool, foreslår jeg at du leser en annen artikkel jeg skrev om bruken av ISETool.

Konklusjon

Vi har to enkle mekanismer tilgjengelig på Windows Phone, IsolatedStorageSettings og IsolatedStorageFile. Isolert lagring representerer et lagringsområde som inneholder filer og kataloger som ikke kan åpnes av andre applikasjoner. Isolert lagring er nyttig i mange situasjoner. Du er velkommen til å laste ned opplærings kildefiler for å bruke som referanse.