Lucrul cu spațiu de stocare izolat pe Windows Phone 8

Stocarea stocată este utilizată pentru stocarea datelor locale pe un telefon Windows. Este "izolat" deoarece alte aplicații nu pot accesa aceste date. În acest tutorial veți obține o imagine de ansamblu a spațiului de stocare izolat și aflați cum îl puteți utiliza pentru a stoca mai sigur datele pe Windows Phone 8.

Arhitectura mobilă a spațiului de stocare izolat este similară cu aplicațiile Silverlight pe Windows. Toate operațiile I / O sunt limitate la spațiul de stocare izolat și nu au acces direct la sistemul de fișiere OS care stau la baza, ceea ce contribuie la asigurarea securității și împiedică accesul neautorizat și coruperea datelor de la alte aplicații. Dacă doriți să permiteți accesul la date între două aplicații, veți avea nevoie de un serviciu bazat pe cloud, care să vă poată împărtăși aceste date. 

Dosarul local este directorul rădăcină al memoriei de date a aplicației. Există două modalități de stocare a datelor pe plan local. Prima modalitate este printr-o colecție de perechi de nume / valoare numite IsolatedStorageSettings. Cealaltă cale este prin crearea de fișiere și foldere reale numite IsolatedStorageFile. Iată câteva lucruri demne de menționat pentru depozitarea izolată:

  • Stocarea stocată stocată utilizează cote de permisiune, care sunt limitele de stocare stabilite de IsolatedStoragePermission obiecte.
  • Dacă încercați să scrieți date care depășesc cota, un IsolatedStorageException excepția este aruncată.
  • IsolatedStorageFilePermission decide dacă să acorde permisiunea fișierului sau directorului. 

1. Schemele URI

Folosește isostore sau ms-appdata Numele schemelor URI când adresați folderul local într-o cale. Ambele scheme de URI vă permit să accesați folderul local, dar acestea nu pot fi folosite interschimbabil. ms-appdata este folosit pentru a aborda rădăcina folderului local cu API, în timp ce isostore este folosit pentru a aborda rădăcina folderului local. Următorul exemplu demonstrează acest lucru. 

// Creați o bază de date locală în dosarul local cu schema URI isostore. MyDataContext db = noul MyDataContext ("isostore: /mydb.sdf"); // Obțineți un fișier din dosarul local cu schema URI ms-appdata. var file = așteaptă Windows.StorageFile.GetFileFromApplicationUriAsync (nou Uri ("ms-appdata: ///local/AppConfigSettings.xml"));

ms-appdata necesită trei tăieturi (///) și isostore necesită doar o singură lovire (/). Lungimea totală a căii pentru oricare dintre cele două scheme URI nu poate depăși 185 de caractere.

2. IsolatedStorageSettings

Cea mai simplă modalitate de a plasa datele în spațiu de stocare izolat este utilizarea IsolatedStorageSettings clasa, care este a Dicţionar care stochează perechi cheie-valoare în spațiul de stocare izolat. IsolatedStorageSettings este de obicei folosit pentru salvarea setărilor, cum ar fi numărul de imagini care trebuie afișate pe pagină, opțiunile de aspect al paginii și așa mai departe. Datele salvate în IsolatedStorageSettings persistă în lansarea aplicațiilor.

Dacă doriți doar să stocați informații despre setări, cum ar fi Nume utilizator = "Fred", atunci puteți utiliza ApplicationSettings obiect în depozitare izolată. Este folosit în același mod în care ați folosi dicționarul. saveString metoda poate fi folosită pentru a salva o valoare de șir mesaj pentru cheia Nume.

void saveString (mesaj șir, șir de nume) IsolatedStorageSettings.ApplicationSettings [name] = message; IsolatedStorageSettings.ApplicationSettings.Save (); 

Depozitul funcționează ca un dicționar, dar nu uitați să sunați Salvați când ați terminat să adăugați chei.

Pentru a prelua valori din setări, puteți utiliza funcția loadString care ia cheia setărilor salvate ca parametru și returnează valoarea dacă există cheia.

string string de încărcare (numele șirului) if (IsolatedStorageSettings.ApplicationSettings.Contains (name)) retur (șir) IsolatedStorageSettings.ApplicationSettings [nume];  altceva return null;  

Verificați dacă cheia există înainte de a încerca să o găsiți. Dacă încercați să obțineți valoarea pentru o cheie care nu există, o excepție va fi aruncată.

O bună practică este să creați o clasă statică specială, care să conțină setările aplicației dvs. Acest lucru facilitează oricând accesarea oricărei proprietăți din aplicația dvs..

Dacă lucrați la un proiect pentru aplicații Windows universale, apoi utilizați IsolatedStorageSettings.ApplicationSettings va da o eroare de sintaxă. Trebuie să o înlocuiți Windows.Storage.ApplicationData.Current.LocalSettings.

3. IsolatedStorageFile

IsolatedStorageFile este mecanismul pe care îl puteți utiliza pentru a stoca fișiere pe dispozitivul unui utilizator. Puteți efectua diverse operațiuni pe spațiul de stocare izolat, cum ar fi crearea de dosare și fișiere, scrierea unui fișier, citirea datelor, eliminarea fișierelor etc..

Aceste fișiere și foldere nu sunt accesibile altor aplicații instalate pe dispozitivul utilizatorului. IsolatedStorageFileStream clasa este folosit pentru a citi, scrie și crea fișiere în spațiu de stocare izolat. Această clasă se extinde FileStream, ceea ce înseamnă că puteți utiliza o instanță de IsolatedStorageFileStream în cele mai multe situații în care a FileStream exemplu, ar putea fi folosită altfel, cum ar fi construirea unui StreamReader sau StreamWriter.

Scrierea unui fișier 

Următorul fragment de cod vă arată cum să scrieți într-un fișier în spațiu de stocare izolat. saveGameToIsolatedStorage funcția creează un fișier nou în memorie izolată și salvează șirul mesaj în ea.

privat void saveGameToIsolatedStorage (mesaj string) folosind (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) folosind IsolatedStorageFileStream rawStream = isf.CreateFile ("MyFile.store")) scriitor StreamWriter = StreamWriter nou (rawStream); writer.WriteLine (mesaj); // salvați scriitorul mesajului.Închidere ();  

Citirea dintr-un fișier

 loadString funcția citește și returnează textul conținut în fișier. Funcția este utilizată Fisierul exista pentru a verifica mai întâi dacă fișierul există în spațiu de stocare izolat. Apoi folosește un exemplu de StreamReader pentru a citi fișierul.

string string stringString () string rezultat = null; folosind IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) if (isf.FileExists ("Myfile.store") folosind IsolatedStorageFileStream rawStream = isf.OpenFile (numele fișierului, System.IO.FileMode.Open)) reader StreamReader = StreamReader (rawStream); result = reader.ReadLine (); reader.Close (); rezultatul returnat; 

Stocarea stocată izolată nu este disponibilă pentru aplicațiile din Magazin Windows. În schimb, utilizați clasele de date ale aplicației în Windows.Storage namespaces incluse în API-ul Windows Runtime pentru a stoca date și fișiere locale.

Se recomandă eliminarea instanțelor IsolatedStorageFile și IsolatedStorageFileStream când nu mai sunt necesare. utilizând declarația face acest lucru în mod automat pentru dvs. și utilizarea sa este considerată o practică bună.

Scrierea la un fișier existent

Pentru a suprascrie conținutul unui fișier existent, utilizați o instanță a StreamWriter pentru a deschide fișierul. Parametrii FileMode.Open și FileAccess.Write sunt trimise pentru a deschide fișierul cu acces la scriere. Acest lucru va suprascrie conținutul existent cu date noi.

IzolatStorageFile myIsolatedStorage = IzolatStorageFile.GetUserStoreForApplication (); dacă (myIsolatedStorage.FileExists (numele fișierului)) folosind (StreamWriter writeFile = nou StreamWriter (noulIsolatedStorageFileStream (nume fișier, FileMode.Open, FileAccess.Write, myIsolatedStorage)) string someTextData = "Aflați codul utilizând Tuts +"; writeFile.WriteLine (someTextData); writeFile.Close (); 

Adăugarea la un fișier existent

Adăugarea datelor într-un fișier existent este foarte asemănătoare cu scrierea datelor într-un fișier existent. Singura modificare necesară este setarea modului fișier la FileMode.Append.

IzolatStorageFile myIsolatedStorage = IzolatStorageFile.GetUserStoreForApplication (); dacă myIsolatedStorage.FileExists (numele fișierului)) if (myIsolatedStorage.FileExists (numele fișierului)) folosind (StreamWriter writeFile = nou StreamWriter (newIsolatedStorageFileStream (filename, FileMode.Append, FileAccess.Write, myIsolatedStorage)) string someTextData = Utilizați Tuts + pentru a afla abilitățile creative, pentru a vă forma viitorul "; writeFile.WriteLine (someTextData); writeFile.Close ();  

Ștergerea unui fișier text

Pentru a șterge un fișier text, mai întâi verificăm dacă fișierul text există în spațiu de stocare izolat și apoi utilizați Sterge fisierul pentru a șterge fișierul.

IzolatStorageFile myIsolatedStorage = IzolatStorageFile.GetUserStoreForApplication (); dacă (myIsolatedStorage.FileExists (nume fișier)) myIsolatedStorage.DeleteFile (nume fișier); 

Vă încurajez să explorați exemplul aplicației din acest tutorial pentru a vedea cum să citiți, să scrieți și să adăugați date într-un fișier.

4. Explorer de stocare izolat

În timp ce depanați o aplicație, este posibil să fie necesar să verificați fișierele și folderele salvate în spațiul de stocare izolat al aplicației, pentru a verifica dacă fișierele corecte sunt salvate în locația corectă. Emulatoarele și dispozitivele care rulează Windows Phone 8 sau o versiune ulterioară pot utiliza Windows Phone Power Tools, care este un instrument bazat pe GUI pentru a accesa spațiul de stocare izolat al aplicațiilor.

O altă opțiune este utilizarea Izolarea spațiului de stocare Explorer sau ISETool, un instrument de linie de comandă instalat împreună cu Windows Phone SDK. Puteți utiliza ISETool pentru a lista, copia și înlocui fișiere și directoare în folderul local al aplicației.

ISETool poate fi utilizat cu orice dispozitiv sau emulator și este de obicei instalat în următoarea locație:

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

Iată câteva lucruri care merită notate în timp ce utilizați ISETool:

  • Aplicația trebuie instalată pe emulator sau pe dispozitiv.
  • Emulatorul sau dispozitivul trebuie să fie deblocat, dar aplicația nu trebuie să fie difuzată.
  • Nu puteți accesa spațiul de stocare izolat al aplicațiilor instalate din Windows Phone Store.
  • Nu puteți vizualiza setările stocate utilizând IsolatedStorageSettings clasa folosind ISETool.

Pentru a utiliza ISETool, trebuie să utilizați următoarea sintaxă:

ISETool.exe    []

Iată câteva lucruri care se pot face folosind ISETool.

Copierea fișierelor de la spațiul de stocare izolat la computer

  1. Implementați aplicația pe care doriți să o testați la emulator sau pe un dispozitiv și creați fișiere și directoare locale. 
  2. Obțineți ID-ul aplicației din ProductID atributul elementului de aplicație în WMAppManifest.xml fişier.
  3. Navigheaza catre ISETool.exe utilizând linia de comandă și executați următoarea comandă pentru a copia toate fișierele din spațiul de stocare izolat al aplicației pe computer.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ date \ myfiles

Înlocuirea fișierelor în spațiu de stocare izolat

Repetați cei trei pași anteriori și utilizați următoarea comandă pentru a înlocui fișierele din spațiul de stocare izolat al aplicației.

ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba "C: \ Date \ Fișierele mele"

Dacă doriți să aflați mai multe despre ISETool, vă sugerăm să citiți un alt articol pe care l-am scris despre utilizarea ISETool.

Concluzie

Avem două mecanisme simple disponibile pe Windows Phone, IsolatedStorageSettings și IsolatedStorageFile. Stocarea izolată reprezintă o zonă de stocare care conține fișiere și directoare care nu pot fi accesate de alte aplicații. Depozitarea izolată este utilă în multe situații. Simțiți-vă liber să descărcați fișierele sursă ale tutorialului pentru a le utiliza ca referință.

Cod