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ă:
IsolatedStoragePermission
obiecte.IsolatedStorageException
excepția este aruncată.IsolatedStorageFilePermission
decide dacă să acorde permisiunea fișierului sau directorului. 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.
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
.
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
.
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 ();
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ă.
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 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 ();
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.
Î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:
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.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ date \ myfiles
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.
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ță.