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
Gestire i dati con Azure Cosmos DB Data Explorer
Utilizzare Hybrid Cache in .NET 9
Integrare SQL Server in un progetto .NET Aspire
Proteggere le risorse Azure con private link e private endpoints
Aggiornare a .NET 9 su Azure App Service
Gestire eccezioni nei plugin di Semantic Kernel in ASP.NET Core Web API
Popolare una classe a partire dal testo, con Semantic Kernel e ASP.NET Core Web API
Utilizzare la funzione EF.Parameter per forzare la parametrizzazione di una costante con Entity Framework
Creare agenti facilmente con Azure AI Agent Service
Utilizzare i variable font nel CSS
Controllare la telemetria con .NET Aspire
Bloccare l'esecuzione di un pod in mancanza di un'artifact attestation di GitHub