C#Windows应用商店后台下载程序到可移动存储
本文关键字:程序 移动存储 下载 后台 应用 C#Windows | 更新日期: 2023-09-27 18:21:21
我正在开发一款可以在所有Windows 8设备上运行的应用程序(RT必须支持),我正在添加一些离线功能,但我不知道如何下载到可移动存储设备,如USB驱动器,或者在Surface RT的情况下,下载到micro SD卡。理想情况下,我希望能够让用户指定目录,但它最终可能会下载数百个文件,因此必须只指定一次,而不是每个文件指定一次。我还希望避免要求用户手动配置库。
我已经找到了很多关于如何下载到各种库的文章,但这些文章都是到内部存储的,因此Surface RT上的空间非常有限。我如何让用户指定大量文件的下载位置和/或下载到可移动存储设备?
一个真正巧妙的解决方案是在用户选择的位置以编程方式创建库,这样用户就可以选择是在本地系统上还是在可移动设备上。
我感谢你的建议。
您应该利用FutureAccessList
。它允许您重用用户先前授予您访问权限的文件和文件夹。
首先,用户将使用FolderPicker
:选择目标文件夹
var picker = new FolderPicker();
picker.FileTypeFilter.Add("*");
var folder = await picker.PickSingleFolderAsync();
然后,您将文件夹添加到FutureAccessList
中,并取回一个字符串令牌,您可以将其存储以供以后使用(例如,添加到ApplicationData.LocalSettings
):
var token = StorageApplicationPermissions.FutureAccessList.Add(folder);
当你想下载一个文件时,首先从FutureAccessList
获取文件夹并创建目标文件:
var folder = await StorageApplicationPermissions.FutureAccessList
.GetFolderAsync(token);
var file = await folder.CreateFileAsync(filename);
有了这些数据,您可以创建一个DownloadOperation
:
var downloader = new BackgroundDownloader();
var download = downloader.CreateDownload(uri, file);
从这里开始,就像下载到任何其他位置一样(开始下载,监控进度…)。