La memorizzazione isolata viene utilizzata per memorizzare dati locali su un Windows Phone. È "isolato" perché altre applicazioni non possono accedere a questi dati. In questo tutorial avrai una panoramica dello storage isolato e imparerai come utilizzarlo per archiviare i dati in modo più sicuro su Windows Phone 8.
L'architettura mobile dell'archiviazione isolata è simile alle applicazioni basate su Silverlight su Windows. Tutte le operazioni di I / O sono limitate all'archiviazione isolata e non hanno accesso diretto al file system del sistema operativo sottostante, il che aiuta a fornire sicurezza e impedisce l'accesso non autorizzato e il danneggiamento dei dati da altre app. Se si desidera condividere i dati tra due applicazioni, è necessario un tipo di servizio basato su cloud che possa condividere tali dati per conto dell'utente.
La cartella locale è la cartella principale dell'archivio dati della tua app. Esistono due modi per memorizzare i dati localmente. Il primo modo è attraverso una raccolta di coppie nome / valore chiamate IsolatedStorageSettings
. L'altro modo è attraverso la creazione di file e cartelle reali chiamati IsolatedStorageFile
. Ecco alcune cose che vale la pena ricordare sullo storage isolato:
IsolatedStoragePermission
oggetti.IsolatedStorageException
l'eccezione è lanciata.IsolatedStorageFilePermission
decide se concedere l'autorizzazione al file o alla directory. Utilizzare il isostore
o ms-appdata
Nomi dello schema URI quando si indirizza la cartella locale in un percorso. Entrambi questi schemi URI consentono di accedere alla cartella locale, ma non possono essere utilizzati in modo intercambiabile. ms-appdata
è usato per indirizzare la radice della cartella locale con le API, mentre isostore
è usato per indirizzare la radice della cartella locale. Il seguente esempio lo dimostra.
// Crea un database locale nella cartella locale con lo schema URI isostore. MyDataContext db = new MyDataContext ("isostore: /mydb.sdf"); // Ottieni un file dalla cartella locale con lo schema URI ms-appdata. var file = attendi Windows.StorageFile.GetFileFromApplicationUriAsync (nuovo Uri ("ms-appdata: ///local/AppConfigSettings.xml"));
ms-appdata
richiede tre barre (///
) e isostore
richiede solo una barra (/
). La lunghezza totale del percorso per uno dei due schemi URI non può superare i 185 caratteri.
IsolatedStorageSettings
Il modo più semplice per mettere i dati in una memoria isolata è usare il IsolatedStorageSettings
classe, che è a Dizionario
che memorizza le coppie chiave-valore nello spazio di archiviazione isolato. IsolatedStorageSettings
viene in genere utilizzato per salvare le impostazioni, ad esempio il numero di immagini da visualizzare per pagina, le opzioni di layout di pagina e così via. I dati salvati in IsolatedStorageSettings
persiste attraverso i lanci delle applicazioni.
Se si desidera solo memorizzare le informazioni sulle impostazioni come Username = "Fred"
, allora puoi usare il Impostazioni dell'applicazione
oggetto nella memoria isolata. Viene utilizzato nello stesso modo in cui si usa un dizionario. Il SaveString
metodo può essere usato per salvare un valore di stringa Messaggio
per la chiave nome
.
void saveString (messaggio stringa, nome stringa) IsolatedStorageSettings.ApplicationSettings [nome] = messaggio; IsolatedStorageSettings.ApplicationSettings.Save ();
Lo storage funziona come un dizionario, ma ricorda di chiamare Salvare
quando hai finito di aggiungere le chiavi.
Per recuperare i valori dalle impostazioni, è possibile utilizzare loadString
metodo che prende la chiave delle impostazioni salvate come parametro e restituisce il valore se la chiave esiste.
string loadString (nome stringa) if (IsolatedStorageSettings.ApplicationSettings.Contains (name)) return (string) IsolatedStorageSettings.ApplicationSettings [nome]; else return null;
Verifica se la chiave esiste prima di provare a trovarla. Se stai cercando di ottenere il valore per una chiave che non esiste, verrà generata un'eccezione.
Una buona pratica è creare una classe statica speciale, che contenga le impostazioni dell'applicazione. Ciò semplifica l'accesso a qualsiasi proprietà nella tua applicazione in qualsiasi momento.
Se stai lavorando a un progetto di app di Windows universale, quindi utilizza IsolatedStorageSettings.ApplicationSettings
darà un errore di sintassi. Devi sostituirlo con Windows.Storage.ApplicationData.Current.LocalSettings
.
IsolatedStorageFile
IsolatedStorageFile
è il meccanismo che è possibile utilizzare per memorizzare i file sul dispositivo dell'utente. È possibile eseguire varie operazioni sull'archivio isolato, ad esempio creare cartelle e file, scrivere su un file, leggere dati, rimuovere file, ecc.
Questi file e cartelle non sono accessibili ad altre applicazioni installate sul dispositivo dell'utente. Il IsolatedStorageFileStream
la classe è usata per leggere, scrivere e creare file nella memoria isolata. Questa classe si estende FileStream
, il che significa che puoi usare un'istanza di IsolatedStorageFileStream
nella maggior parte delle situazioni in cui a FileStream
altrimenti potrebbe essere usata l'istanza, ad esempio per costruire a StreamReader
o StreamWriter
.
Il seguente frammento di codice mostra come scrivere su un file in una memoria isolata. Il saveGameToIsolatedStorage
la funzione crea un nuovo file nella memoria isolata e salva la stringa Messaggio
dentro.
private void saveGameToIsolatedStorage (string message) using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) using (IsolatedStorageFileStream rawStream = isf.CreateFile ("MyFile.store")) StreamWriter writer = new StreamWriter (rawStream); writer.WriteLine (messaggio); // salva il messaggio writer.Close ();
Il loadString
la funzione legge e restituisce il testo contenuto nel file. La funzione utilizza Il file esiste
per prima cosa controlla se il file esiste nella memoria isolata. Quindi utilizza un'istanza di StreamReader
leggere il file.
private string loadString () string result = null; using (IsolatedStorageFile isf = IsolatedStorageFile.GetUserStoreForApplication ()) if (isf.FileExists ("Myfile.store") using (IsolatedStorageFileStream rawStream = isf.OpenFile (filename, System.IO.FileMode.Open)) StreamReader reader = new StreamReader (rawStream); result = reader.ReadLine (); reader.Close (); restituisce risultato;
Lo spazio di archiviazione isolato non è disponibile per le app di Windows Store. Invece, utilizzare le classi di dati dell'applicazione in Windows.Storage
spazi dei nomi inclusi nell'API di Windows Runtime per memorizzare dati e file locali.
Si consiglia di eliminare le istanze di IsolatedStorageFile
e IsolatedStorageFileStream
quando non sono più necessari Il utilizzando
la dichiarazione lo fa automaticamente per te e il suo utilizzo è considerato una buona pratica.
Per sovrascrivere il contenuto di un file esistente, utilizzare un'istanza di StreamWriter
classe per aprire il file. I parametri FileMode.Open
e FileAccess.Write
vengono passati per aprire il file con accesso in scrittura. Ciò sovrascriverà il contenuto esistente con nuovi dati.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (filename)) using (StreamWriter writeFile = new StreamWriter (new IsolatedStorageFileStream (filename, FileMode.Open, FileAccess.Write, myIsolatedStorage))) string someTextData = "Impara a codificare utilizzando Tuts +"; writeFile.WriteLine (someTextData); writeFile.Close ();
L'aggiunta di dati a un file esistente è molto simile alla scrittura di dati su un file esistente. L'unica modifica necessaria è l'impostazione della modalità file su FileMode.APPEND
.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (filename)) if (myIsolatedStorage.FileExists (filename)) using (StreamWriter writeFile = new StreamWriter (new IsolatedStorageFileStream (filename, FileMode.Append, FileAccess.Write, myIsolatedStorage))) string someTextData = " Usa Tuts + per imparare le abilità creative, modella il tuo futuro "; writeFile.WriteLine (someTextData); writeFile.Close ();
Per eliminare un file di testo, per prima cosa controlliamo se il file di testo esiste in una memoria isolata e poi lo usiamo Cancella il file
per cancellare il file.
IsolatedStorageFile myIsolatedStorage = IsolatedStorageFile.GetUserStoreForApplication (); if (myIsolatedStorage.FileExists (filename)) myIsolatedStorage.DeleteFile (filename);
Vi incoraggio ad esplorare l'applicazione di esempio di questo tutorial per vedere come leggere, scrivere e aggiungere dati a un file.
Durante il debug di un'applicazione, potrebbe essere necessario controllare i file e le cartelle salvate nella memoria isolata della tua app per verificare che i file corretti siano stati salvati nella posizione corretta. Emulatori e dispositivi che eseguono Windows Phone 8 o versioni precedenti possono utilizzare Windows Phone Power Tools, uno strumento basato sulla GUI per l'accesso all'archiviazione isolata delle app.
Un'altra opzione sta usando il Explorer di archiviazione isolato o ISETool, uno strumento da riga di comando installato insieme a Windows Phone SDK. È possibile utilizzare ISETool per elencare, copiare e sostituire file e directory nella cartella locale dell'app.
ISETool può essere utilizzato con qualsiasi dispositivo o emulatore e viene generalmente installato nel seguente percorso:
Programmi (x86) \ MicrosoftSDKs \ WindowsPhone \ v8.0 \ Tools \ IsolatedStorageExplorerTool
Ecco alcune cose che vale la pena notare durante l'utilizzo di ISETool:
IsolatedStorageSettings
classe usando ISETool.Per utilizzare ISETool, è necessario utilizzare la seguente sintassi:
ISETool.exe[ ]
Ecco un paio di cose che possono essere fatte usando ISETool.
ISETool.exe ts xd f8ce6878-0aeb-497f-bcf4-65be961d4bba c: \ data \ myfiles
Ripeti i tre passaggi precedenti e utilizza il seguente comando per sostituire i file nella memoria isolata dell'app.
ISETool.exe rs xd f8ce6878-0aeb-497f-bcf4-65be961d4bba "C: \ Data \ My Files"
Se vuoi saperne di più su ISETool, ti suggerisco di leggere un altro articolo che ho scritto sull'uso di ISETool.
Abbiamo due semplici meccanismi disponibili su Windows Phone, IsolatedStorageSettings
e IsolatedStorageFile
. La memoria isolata rappresenta un'area di archiviazione contenente file e directory a cui non è possibile accedere da altre applicazioni. L'archiviazione isolata è utile in molte situazioni. Sentiti libero di scaricare i file sorgente del tutorial da usare come riferimento.