-2

すべての Windows 8 デバイス (RT のサポートが必須) で実行されるアプリに取り組んでおり、オフライン機能の追加にも取り組んでいますが、USB ドライブなどのリムーバブル ストレージ デバイスにダウンロードする方法がわかりません。または、Surface RT の場合はマイクロ SD カードです。理想的には、ユーザーがディレクトリを指定できるようにしたいのですが、何百ものファイルをダウンロードすることになる可能性があるため、ファイルごとに 1 回ではなく、1 回だけ指定する必要があります。また、ユーザーがライブラリを手動で構成する必要がないようにしたいと考えています。

さまざまなライブラリにダウンロードする方法に関する記事をたくさん見つけましたが、それらは内部ストレージに保存されるため、Surface RT のスペースは非常に限られています。大量のファイルをダウンロードしたり、リムーバブル ストレージ デバイスにダウンロードしたりする場所をユーザーに指定させるにはどうすればよいですか?

非常に洗練されたソリューションは、ユーザーが選択した場所にプログラムでライブラリを作成して、ローカル システムまたはリムーバブル デバイスのどちらにライブラリを配置するかをユーザーが選択できるようにする方法です。

提案をいただければ幸いです。

4

1 に答える 1

0

を活用する必要があり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);

ここからは、他の場所にダウンロードする場合と同じように続行します (ダウンロードを開始し、進行状況を監視します...)。

于 2013-07-07T07:22:02.310 に答える