In un'applicazione WinRT abbiamo la possibilità di salvare file nella cartella Downloads dell'utente. Tali file vengono salvati in una sotto cartella con il nome dell'applicazione e sono accessibili solo all'applicazione stessa.
L'accesso a questa cartella avviene attraverso la classe DownloadsFolder di Windows.Storage; con il metodo CreateFileAsync possiamo creare un file, il cui nome può essere dichiarato come parametro e reso unico con una opzione in overload, come da esempio.
var newfile = await Windows.Storage.DownloadsFolder.CreateFileAsync("winrt.jpg", CreationCollisionOption.GenerateUniqueName); using (StorageStreamTransaction transaction = await newfile.OpenTransactedWriteAsync()) { using (var webStream = await new HttpClient().GetStreamAsync(new Uri("https://www.winrtitalia.com/winrt.jpg"))) { await webStream.CopyToAsync(transaction.Stream.AsStreamForWrite()); webStream.Dispose(); } await transaction.CommitAsync(); }
Il metodo CreateFileAsync restituisce un oggetto di tipo StorageFile il cui stream può essere aperto in scrittura con il metodo OpenTransactedWriteAsync e successivamente con AsStreamForWrite della sua proprietà Stream.
Grazie a HttpClient e al suo GetStreamAsync possiamo aprire lo stream di una risorsa remota e riversare i relativi byte nello StorageFile.
Per completare la scrittura è importante chiudere lo stream con CommitAsync.
Commenti
Per inserire un commento, devi avere un account.
Fai il login e torna a questa pagina, oppure registrati alla nostra community.
Approfondimenti
Utilizzare il metodo CountBy di LINQ per semplificare raggruppamenti e i conteggi
Utilizzare il nuovo modello GPT-4o con Azure OpenAI
Come EF 8 ha ottimizzato le query che usano il metodo Contains
Generare velocemente pagine CRUD in Blazor con QuickGrid
La gestione della riconnessione al server di Blazor in .NET 9
Scrivere selettori CSS più semplici ed efficienti con :is()
Creare una libreria CSS universale: Immagini
Paginare i risultati con QuickGrid in Blazor
Il nuovo controllo Range di Blazor 9
Utilizzare il trigger SQL con le Azure Function
Usare le navigation property in QuickGrid di Blazor
Utilizzare l nesting nativo dei CSS