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
Gestione dei nomi con le regole @layer in CSS
Autenticarsi in modo sicuro su Azure tramite GitHub Actions
Filtering sulle colonne in una QuickGrid di Blazor
Utilizzare il metodo Index di LINQ per scorrere una lista sapendo anche l'indice dell'elemento
Eseguire operazioni sui blob con Azure Storage Actions
Migliorare i tempi di risposta di GPT tramite lo streaming endpoint in ASP.NET Core
Le novità di Angular: i miglioramenti alla CLI
Gestire la cancellazione di una richiesta in streaming da Blazor
Disabilitare automaticamente un workflow di GitHub (parte 2)
Supportare lo HierarchyID di Sql Server in Entity Framework 8
Usare lo spread operator con i collection initializer in C#
Sostituire la GitHub Action di login su private registry