-2

我正在开发一个可以在所有 Windows 8 设备上运行的应用程序(必须支持 RT),并且我正在添加一些离线功能,但我不知道如何下载到 USB 驱动器等可移动存储设备或者,如果是 Surface RT,则为 micro SD 卡。理想情况下,我希望能够让用户指定目录,但它最终可能会下载数百个文件,因此必须只指定一次,而不是每个文件一次。我还想避免要求用户手动配置库。

我找到了很多关于如何下载到各种库的文章,但这些文章都进入了内部存储,因此 Surface RT 上的空间非常有限。如何让用户指定要下载和/或下载到可移动存储设备的大量文件的位置?

一个非常巧妙的解决方案是一种在用户选择的位置以编程方式创建库的方法,这样用户就可以选择是在本地系统上还是在可移动设备上。

我很感激任何建议。

4

1 回答 1

0

您应该利用FutureAccessList. 它允许您重复使用用户之前授予您访问权限的文件和文件夹。

首先,用户将使用以下命令选择目标文件夹FolderPicker

var picker = new FolderPicker();
picker.FileTypeFilter.Add("*");
var folder = await picker.PickSingleFolderAsync();

然后,您将文件夹添加到FutureAccessList并取回一个字符串令牌,您可以将其存储以供以后使用(例如 to 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);

从这里开始,就像您正在下载到任何其他位置一样(开始下载,监控进度......)。

于 2013-07-07T07:22:02.310 回答