posts - 308, comments - 340, trackbacks - 12

My Links

News

View Pietro Libro's profile on LinkedIn

DomusDotNet
   DomusDotNet

Pietro Libro

Tag Cloud

Article Categories

Archives

Post Categories

Blogs amici

Links

Isolated Storage

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:

Print | posted on mercoledì 6 febbraio 2008 14.30 | Filed Under [ C# ]

Comments have been closed on this topic.

Powered by: