L'uso dell'isolated storage permette alle nostre applicazioni di memorizzare dati su file, senza preoccuparsi di avere privilegi sufficienti per creare/modificare/cancellare file su disco. La classe necessaria all'utilizzo dell'isolated storage è IsolatedStorageFile che fornisce le funzionalità di base per la creazione di file e di cartelle nell'isolated storage. Questa si compone dei seguenti metodi statici , secondo del livello di isolamento che vogliamo ottenere:
GetMachineStoreForApplication |
GetMachineStoreForAssembly |
GetMachineStoreForDomain |
GetStore |
GetUserStoreForApplication |
GetUserStoreForAssembly |
GetUserStoreForDomain |
Uno store di tipo machine-level può contenere informazioni relative all'assembly chiamante e alla macchina locale, uno store di tipo user-level, può contenere informazioni relative all'assembly chiamante e allo specifico user. Per poter creare, scrivere, leggere dati in un file dell'isolated storage, è necessario creare un istanza di tipo IsolatedStorageFileStream (derivata da FileStream), che può essere utilizzata nel modo in cui siamo già abituati con i normali stream. Ad esempio, il seguente codice:
1 IsolatedStorageFile store = IsolatedStorageFile.GetUserStoreForAssembly();
2 3 CreateFile(store, "Dati_Utente.txt");
4 5 ...
crea un store in ambito Assembyl\User e crea un file di testo nel quale memorizzare delle informazioni. Il codice della funzione CreateFile è il seguente:
1 private void CreateFile(IsolatedStorageFile store, string fileName)
2 {
3 //Crea istanza di oggetto IsolateStorageFileStream 4 using (IsolatedStorageFileStream storeStream =
5 new IsolatedStorageFileStream(fileName , FileMode.Create, store))
6 {
7 //Crea istanza di oggetto streamWriter 8 using (StreamWriter streamWriter = new StreamWriter(storeStream))
9 {
10 //Scrive dei dati 11 streamWriter.WriteLine("Linea #1");
12 streamWriter.WriteLine("Linea #2");
13 streamWriter.WriteLine("Linea #3");
14 streamWriter.WriteLine("Linea #4");
15 streamWriter.WriteLine("Linea #5");
16 //Esegue il flush e chiude lo stream 17 streamWriter.Flush();
18 streamWriter.Close();
19 }
20 }
21 }
Per recuperare i dati, il codice è altrettanto semplice, infatti è sufficiente utilizzare uno StreamReader:
1 private void ReadFile(IsolatedStorageFile store, string fileName)
2 {
3 using (IsolatedStorageFileStream storeStream = new IsolatedStorageFileStream(fileName , FileMode.Open, store))
4 {
5 using (StreamReader streamReader = new StreamReader(storeStream))
6 {
7 while (!streamReader.EndOfStream)
8 {
9 MessageBox.Show(streamReader.ReadLine());
10 }
11 streamReader.Close();
12 }
13 }
14 }
Per testare l'esistenza di un file all'interno dell'isolated storage non esiste nessun metodo, ma è possibile rimediare creando del codice ad hoc:
1 private bool StoreFileExists(IsolatedStorageFile store, string fileName)
2 {
3 return (store.GetFileNames(fileName).Length == 1);
4 }
Per creare una directory all'interno nell'isolated storage è sufficiente utilizzare l'apposita funzione CreateDirectory
1 store.CreateDirectory("Seconda_Directory")
Come per i file, non esiste un metodo per testare se una directory esiste, ma possiamo scrivere dell' opportuno codice:
1 private bool StoreDirectoryExists(IsolatedStorageFile store, string directotyName)
2 {
3 return (store.GetDirectoryNames(directotyName).Length == 1);
4 }
IsolatedStorageFile su MSDN
Technorati Tag:
Isolated Storage