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
Utilizzare gRPC su App Service di Azure
Recuperare l'ultima versione di una release di GitHub
Sfruttare GPT-4o realtime su Azure Open AI per conversazioni vocali
Usare una container image come runner di GitHub Actions
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Creare un webhook in Azure DevOps
Routing statico e PreRendering in una Blazor Web App
Limitare le richieste lato server con l'interactive routing di Blazor 8
Effettuare il binding di date in Blazor
Evitare (o ridurre) il repo-jacking sulle GitHub Actions
Creare gruppi di client per Event Grid MQTT
I più letti di oggi
- ora è la volta di #azure. http://aspitalia.com/build-win8 #BldWin
- Implementare il pattern Dispose del .NET Framework
- ecco tutte le novità pubblicate sui nostri siti questa settimana: https://aspit.co/wkly buon week-end!
- Utilizzare la cancellazione logica in #azure Container Registry https://aspit.co/ccy di @CristianCivera
- Centrare elementi in HTML tramite CSS
- Annunciato #PowerBI Embedded e disponibile in preview a partire da oggi! https://aspit.co/build2016 #build2016
- con il code inspector si potrà vedere il codice server associato all'HTML prodotto, ... http://aspitalia.com/build-win8 #BldWin
- 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!