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
Creare una libreria CSS universale - Rotazione degli elementi
Montare Azure Blob Storage su Linux con BlobFuse2
Analizzare il contenuto di una issue con GitHub Models e AI
Utilizzare il metodo ExceptBy per eseguire operazione di sottrazione tra liste
Documentare i servizi REST con Swagger e OpenAPI con .NET 9
Effettuare il log delle chiamate a function di GPT in ASP.NET Web API
Eliminare una project wiki di Azure DevOps
Ricevere notifiche sui test con Azure Load Testing
Rendere i propri workflow e le GitHub Action utilizzate più sicure
Conoscere il rendering Server o WebAssembly a runtime in Blazor
Migliorare l'organizzazione delle risorse con Azure Policy
Utilizzare l'espressione if inline in una pipeline di Azure DevOps


