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
Reactive form tipizzati con modellazione del FormBuilder in Angular
Effettuare il deploy di immagini solo da container registry approvati in Kubernetes
Generare token per autenicarsi sulle API di GitHub
Creare un webhook in Azure DevOps
Mascherare l'output di un valore all'interno dei log di un workflow di GitHub
Miglioramenti agli screen reader e al contrasto in Angular
Eseguire attività con Azure Container Jobs
Ottimizzare il mapping di liste di tipi semplici con Entity Framework Core
Evitare la script injection nelle GitHub Actions
Utilizzare le collection expression in C#
Eseguire operazioni con timeout in React
Utilizzare gli snapshot con Azure File shares