Nello script 6 (https://www.winrtitalia.com/script/6/Accedere-Risorse-Immagini-Windows-Store-App-Windows.aspx) abbiamo visto che le Windows Store app hanno a disposizione tre tipologie di cartelle in cui memorizzare file e informazioni: LocalFolder, TemporaryFolder e RoamingFolder.
In WinRT leggere e scrivere file in queste cartelle può essere fatto attraverso Windows.Storage.ApplicationData.Current e una delle tre proprietà sopra citate, di tipo StorageFolder.
In tali cartelle, ad esempio, possiamo persistere lo stato di alcuni oggetti attraverso la serializzazione ed il loro salvataggio in file XML.
Con l'esempio seguente andiamo a serializzare e scrivere il file data.xml in LocalFolder.
string fileName = "data.xml"; var myObj = new MyObject() { Id = 1, Name = "Name1", Description = "Description1" }; StorageFolder localFolder = ApplicationData.Current.LocalFolder; StorageFile localFile = await localFolder.CreateFileAsync(fileName, CreationCollisionOption.ReplaceExisting); IRandomAccessStream fileRandomAccess = await localFile.OpenAsync(FileAccessMode.ReadWrite); IOutputStream fileOutputStream = fileRandomAccess.GetOutputStreamAt(0); var fileSerializer = new DataContractSerializer(typeof(MyObject)); fileSerializer.WriteObject(fileOutputStream.AsStreamForWrite(), myObj); await fileOutputStream.FlushAsync();
Nel codice seguente vediamo come leggere il file salvato e ricostruire l'oggetto descritto al suo interno.
string fileName = "data.xml"; StorageFolder localFolder = ApplicationData.Current.LocalFolder; StorageFile localFile2 = await localFolder.GetFileAsync(fileName); var fileSerializer = new DataContractSerializer(typeof(MyObject)); IInputStream fileInputStream = await localFile2.OpenReadAsync(); var obj = (MyObject)fileSerializer.ReadObject(fileInputStream.AsStreamForRead());
Se andiamo a controllare dove il file viene effettivamente salvato sul file system:

possiamo notare come questo sia contenuto in una cartella il cui nome corrisponde al package family name, verificabile nel file di manifest Package.appxmanifest.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Creare una libreria CSS universale - Rotazione degli elementi
Supportare la sessione affinity di Azure App Service con Application Gateway
Filtering sulle colonne in una QuickGrid di Blazor
Gestione CSS in Blazor con .NET 9
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Gestione degli eventi nei Web component HTML
Generare un hash con SHA-3 in .NET
Ottenere un token di accesso per una GitHub App
Il nuovo controllo Range di Blazor 9
Triggerare una pipeline su un altro repository di Azure DevOps
Cancellare una run di un workflow di GitHub
I più letti di oggi
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Repaint, Reflow e Compositing: Come Funziona il Rendering nel Browser
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!