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
Visualizzare le change sul plan di Terraform tramite le GitHub Actions
Migliorare la sicurezza dei prompt con Azure AI Studio
Sostituire la GitHub Action di login su private registry
Esporre i propri servizi applicativi con Semantic Kernel e ASP.NET Web API
Utilizzare Container Queries nominali
Hosting di componenti WebAssembly in un'applicazione Blazor static
Creazione di componenti personalizzati in React.js con Tailwind CSS
Eseguire query per recuperare il padre di un record che sfrutta il tipo HierarchyID in Entity Framework
Change tracking e composition in Entity Framework
Miglioramenti agli screen reader e al contrasto in Angular
Ottimizzare le performance delle collection con le classi FrozenSet e FrozenDictionary
Creare gruppi di client per Event Grid MQTT