Un piccolo serpente ci conduce attraverso le principali caratteristiche del Windows Phone 7
Introduzione Core UI & Design Conclusione Premi Discussioni
Marcosroom.it Didatticando

Isolated storage: file e impostazioni

Anche questa volta, se sei un "Silverlighter", l'isolated storage non dovrebbe essere nuovo per te, ma un piccolo ripasso non fa mai male, no?

Analizziamo i termini: "storage" significa che è una sorta di magazzino, e "isolated" significa che è solo ed esclusivamente per la tua applicazione. Quindi, l'isolated storage è un deposito dove puoi mettere i tuoi file e le tue cartelle, e non è accessibile da altre applicazioni, come tu non puoi accedere all'isolated storage di altre applicazioni.

L'uso dell'isolated storage è obbligatorio, poichè non c'è altro modo di memorizzare dati persistenti: Windows Phone 7, infatti, non ti consente di scrivere o leggere al di fuori del tuo isolated storage. Da MSDN:

L'isolated storage permette alle applicazioni di creare e mantenere un archivio locale. L'architettura mobile è simile a quella delle applicazioni Windows basate su Silverlight. Tutte le operazioni di I/O sono limitate all'isolated storage e non si ha accesso diretto al sottostante file system del sistema operativo. Infine, questo aiuta a mantenere la sicurezza e a prevenire accessi non autorizzati e corruzione dati.

Gli sviluppatori di applicazioni hanno l'abilità di memorizzate dati localmente sul telefono, ancora una volta sfruttando tutti i vantaggi dell'isolated storage, tra cui proteggere i dati da altre applicazioni.

In altre parole, questo è lo schema che rappresenta l'isolated storage.

Isolated storage explanation

Ogni classe necessaria per gestire l'isolated storage risiede all'interno del namespace System.IO.IsolatedStorage.

La prima cosa da fare è ottenere un riferimento allo storage solo per la nostra applicazione; per completare questo obiettivo, chiamiamo il metodo statico GetUserStoreForApplication della classe IsolatedStorageFile. L'oggetto che otteniamo è una sorta di "file system manager": infatti, con questo, possiamo creare o cancellare file e cartelle, leggere e scrivere file. Per scrivere dati in un file, dobbiamo creare un nuovo file e ottenerne lo stream: chiamiamo il metodo OpenFile per ottenere uno stream che passeremo al costruttore della classe StreamWriter.
Una volta fatto ciò, possiamo utilizzare lo StreamWriter per scrivere dati nel nostro file. Tradotto in codice, tutto ciò significa:

using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream fileStream = 
    storage.OpenFile("MyFile.txt", System.IO.FileMode.OpenOrCreate, System.IO.FileAccess.Write))
using (StreamWriter writer = new StreamWriter(fileStream))
    writer.Write("Hello from isolated storage!");

Ti consiglio di usare gli using, perchè ti permettono di risparmiare molto tempo, e di evitare molte chiamate a Dispose e Close per pulire la memoria e chiudere tutti i flussi.

Per leggere i dati da un file, invece, la procedura è molto simile alla precedente:

string readText = "";

using (IsolatedStorageFile storage = IsolatedStorageFile.GetUserStoreForApplication())
using (IsolatedStorageFileStream fileStream = 
    storage.OpenFile("MyFile.txt", System.IO.FileMode.Open, System.IO.FileAccess.Read))
using (StreamReader reader = new StreamReader(fileStream))
    readText = reader.ReadToEnd();

Le uniche differenze sono che questa volta utilizziamo uno StreamReader invece di uno StreamWriter, e che il file è aperto con System.IO.FileAccess.Read invece di System.IO.FileAccess.Write.

L'isolated storage può essere utilizzato facilmente per memorizzare le impostazioni dell'applicazione, per esempio, in un file XML. Possiamo creare un nuovo XML, aggiungere nodi, scrivere valori, rileggerli dopo, etc... La procedura è semplice, ma un po' lunga. Se hai notato, nello schema precedente che spiegava l'isolated storage, ho separato le impostazioni da tutte le altre cose. Ho fatto così perchè possiamo trattare le impostazioni i una maniera diversa (e più semplice).

Non sarebbe più semplice trattare le impostazioni come un comunissimo dizionario, evitando tutte le azioni di I/O? Qui è dove la classe IsolatedStorageSettings viene in nostro soccorso. Con la proprietà statica ApplicationSettings, otteniamo le impostazioni limitate alla nostra applicazione; l'ggetto restituito è un IDictionary<string, object>, già riempito con le nostre impostazioni! Un esempio qui potrebbe chiarire le idee:

IsolatedStorageSettings settings = IsolatedStorageSettings.ApplicationSettings;

settings["String"] = "value";
settings["Bool"] = true;
settings["DateTime"] = DateTime.Now;

settings.Save();

Ciò significa che, la prima volta che la nostra applicazione viene lanciata, le nostre impostazioni sono vuote e aggiungiamo nuove chiavi al dizionario, come un comunissimo dizionario. Alla fine, salviamo le impostazioni chiamando il metodo Save. Ricordati di chiamare questo metodo, altrimenti, nulla verrà salvato, poichè questi sono tutti cambiamenti in memoria! La prossima volta che il nostro codice viene eseguito, chiamiamo IsolatedStorageSettings.ApplicationSettings e otteniamo un IsolatedStorageSettings già riempito con i nostri dati!
Il resto del codice, quindi, aggiorna il dizionario e salva di nuovo.

 

Condividi
Indietro Tutti i webmaster che volessero segnalare, non copiare,
il contenuto di questa pagina sul proprio sito, possono farlo liberamente.
E' gradito un preavviso tramite mail all'autore e l'iserimento,
nella pagina di citazione, di un link verso la pagina corrente.
© Copyright    Marco's Room
Avanti
Download SnakeMobile

Scaricato 115 volte

Navigazione Transizioni Pulsante rotondo luminoso Trigger Un piccolo ripasso di matematica Selettore circolare Isolated storage: file e impostazioni Impostazioni Build action: Content o Resource? Audio & XNA