ピッカーでファイルやフォルダーを開くOpen files and folders with a picker

重要な APIImportant APIs

ユーザーがピッカーを操作してファイルやフォルダーにアクセスできるようにします。Access files and folders by letting the user interact with a picker. ファイルへのアクセスには FileOpenPicker クラスと FileSavePicker クラス、フォルダーへのアクセスには FolderPicker を使います。You can use the FileOpenPicker and FileSavePicker classes to access files, and the FolderPicker to access a folder.

注意

 完全なサンプルについては、「File picker sample」 (ファイル ピッカーのサンプル) を参照してください。 For a complete sample, see the File picker sample.

前提条件Prerequisites

ファイル ピッカーの UIFile picker UI

ファイル ピッカーには、ユーザーを指示する情報やユーザーがファイルを開くまたは保存するときの一貫したエクスペリエンスを提供する情報が表示されます。A file picker displays information to orient users and provide a consistent experience when opening or saving files.

次の情報が含まれます。That information includes:

  • 現在の場所The current location
  • ユーザーが選んだ項目The item or items that the user picked
  • ユーザーが参照できる場所のツリー。A tree of locations that the user can browse to. これらの場所には、ファイル システム上の場所 (音楽フォルダーやダウンロード フォルダーなど) のほか、ファイル ピッカー コントラクトを実装するアプリ (カメラ、フォト、Microsoft OneDrive など) も含まれます。These locations include file system locations—such as the Music or Downloads folder—as well as apps that implement the file picker contract (such as Camera, Photos, and Microsoft OneDrive).

メール アプリで添付ファイルを選ぶ機能にファイル ピッカーが表示される場合もあります。An email app might display a file picker for the user to pick attachments.

2 つのファイルが開く対象として選ばれているファイル ピッカー。

ピッカーのしくみHow pickers work

アプリでは、ファイル ピッカーを使ってユーザーのシステム上のファイルとフォルダーにアクセスします。With a picker your app can access, browse, and save files and folders on the user's system. アプリではこれらの選択を StorageFile オブジェクトと StorageFolder オブジェクトとして受け取ることにより、それらを操作できます。Your app receives those picks as StorageFile and StorageFolder objects, which you can then operate on.

ピッカーは単一の統一されたインターフェイスを使用して、ユーザーがファイル システムや他のアプリからファイルやフォルダーを選べるように表示します。The picker uses a single, unified interface to let the user pick files and folders from the file system or from other apps. 他のアプリから選ばれたファイルは、ファイル システムから選ばれたファイルと同様に、StorageFile オブジェクトとして返されます。Files picked from other apps are like files from the file system: they are returned as StorageFile objects. 通常、アプリはそれらのオブジェクトも、他のオブジェクトと同じ方法で操作できます。In general, your app can operate on them in the same ways as other objects. 他のアプリは、ファイル ピッカー コントラクトに参加することで、ユーザーにファイルを表示します。Other apps make files available by participating in file picker contracts. ファイル、保存場所、またはファイルの更新を他のアプリに提供する場合は、「ファイル ピッカー コントラクトとの統合」をご覧ください。If you want your app to provide files, a save location, or file updates to other apps, see Integrating with file picker contracts.

たとえば、ユーザーがファイルを開けるように、アプリでファイル ピッカーを呼び出すとします。For example, you might call the file picker in your app so that your user can open a file. この場合、アプリは呼び出し元アプリになります。This makes your app the calling app. ファイル ピッカーは、システムや他のアプリと情報をやり取りして、ユーザーがファイルを探して選べるようにします。The file picker interacts with the system and/or other apps to let the user navigate and pick the file. ユーザーがファイルを選ぶと、ファイル ピッカーはそのファイルをアプリに返します。When your user chooses a file, the file picker returns that file to your app. ここでは、ユーザーが OneDrive のような提供元アプリからファイルを選ぶ場合のプロセスを示しています。Here's the process for the case of the user choosing a file from a providing app, such as OneDrive.

ファイル ピッカーを 2 つのアプリの間のインターフェイスとして使って、一方のアプリのファイルをもう一方のアプリから開くプロセスを示す図。

1 つのファイルを選ぶ: 完全なコードPick a single file: complete code listing

var picker = new Windows.Storage.Pickers.FileOpenPicker();
picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
picker.FileTypeFilter.Add(".jpg");
picker.FileTypeFilter.Add(".jpeg");
picker.FileTypeFilter.Add(".png");

Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
if (file != null)
{
    // Application now has read/write access to the picked file
    this.textBlock.Text = "Picked photo: " + file.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

1 つのファイルを選ぶ: ステップ バイ ステップPick a single file: step-by-step

ファイル ピッカーが動作するには、ファイル ピッカー オブジェクトを作成してカスタマイズし、ユーザーが項目を選べるようにそのファイル ピッカーを表示する必要があります。Using a file picker involves creating and customizing a file picker object, and then showing the file picker so the user can pick one or more items.

  1. FileOpenPicker を作成してカスタマイズするCreate and customize a FileOpenPicker

    var picker = new Windows.Storage.Pickers.FileOpenPicker();
    picker.ViewMode = Windows.Storage.Pickers.PickerViewMode.Thumbnail;
    picker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.PicturesLibrary;
    picker.FileTypeFilter.Add(".jpg");
    picker.FileTypeFilter.Add(".jpeg");
    picker.FileTypeFilter.Add(".png");
    

    ファイル ピッカー オブジェクトの、ユーザーとアプリに関連するプロパティを設定します。Set properties on the file picker object relevant to your users and app.

    この例では、3 つのプロパティを設定し、ユーザーが選べる画像の視覚的に優れた表示を作成し、使いやすい場所に配置します:ViewModeSuggestedStartLocation、および FileTypeFilterThis example creates a rich, visual display of pictures in a convenient location that the user can pick from by setting three properties: ViewMode, SuggestedStartLocation, and FileTypeFilter.

    • ViewModePickerViewMode Thumbnail 列挙値に設定すると、ファイル ピッカーでファイルを表すために画像のサムネイルを使用して、視覚的に優れた表示が作成されます。Setting ViewMode to the PickerViewMode Thumbnail enum value creates a rich, visual display by using picture thumbnails to represent files in the file picker. これは、画像やビデオなどの視覚的なファイルを選ぶ場合に設定します。Do this for picking visual files such as pictures or videos. それ以外の場合は、PickerViewMode.List を使います。Otherwise, use PickerViewMode.List. 画像またはビデオの添付機能とドキュメントの添付機能がある架空のメール アプリでは、ファイル ピッカーを表示する前に ViewMode をそれらの機能に対応させます。A hypothetical email app with Attach Picture or Video and Attach Document features would set the ViewMode appropriate to the feature before showing the file picker.

    • PickerLocationId.PicturesLibrary を使って SuggestedStartLocation を Pictures に設定すると、画像を見つけられる可能性が高い場所が最初に表示されます。Setting SuggestedStartLocation to Pictures using PickerLocationId.PicturesLibrary starts the user in a location where they're likely to find pictures. 選ぶファイルの種類 (音楽、画像、ビデオ、ドキュメントなど) に合わせて SuggestedStartLocation を設定します。Set SuggestedStartLocation to a location appropriate for the type of file being picked, for example Music, Pictures, Videos, or Documents. ユーザーは、開始場所から別の場所に移動できます。From the start location, the user can navigate to other locations.

    • FileTypeFilter を使うと、関連性の高いファイルの種類に絞ってユーザーがファイルを選ぶことができます。Using FileTypeFilter to specify file types keeps the user focused on picking files that are relevant. FileTypeFilter の以前のファイルの種類を新しいエントリに置き換えるには、Add ではなく ReplaceAll メソッドを使います。To replace previous file types in the FileTypeFilter with new entries, use ReplaceAll instead of Add.

  2. FileOpenPicker を表示するShow the FileOpenPicker

    • 単一のファイルを選ぶにはTo pick a single file

      Windows.Storage.StorageFile file = await picker.PickSingleFileAsync();
      if (file != null)
      {
          // Application now has read/write access to the picked file
          this.textBlock.Text = "Picked photo: " + file.Name;
      }
      else
      {
          this.textBlock.Text = "Operation cancelled.";
      }
      
    • 複数のファイルを選ぶにはTo pick multiple files

      var files = await picker.PickMultipleFilesAsync();
      if (files.Count > 0)
      {
          StringBuilder output = new StringBuilder("Picked files:\n");
      
          // Application now has read/write access to the picked file(s)
          foreach (Windows.Storage.StorageFile file in files)
          {
              output.Append(file.Name + "\n");
          }
          this.textBlock.Text = output.ToString();
      }
      else
      {
          this.textBlock.Text = "Operation cancelled.";
      }
      

フォルダーを選ぶ: 完全なコードPick a folder: complete code listing

var folderPicker = new Windows.Storage.Pickers.FolderPicker();
folderPicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.Desktop;
folderPicker.FileTypeFilter.Add("*");

Windows.Storage.StorageFolder folder = await folderPicker.PickSingleFolderAsync();
if (folder != null)
{
    // Application now has read/write access to all contents in the picked folder
    // (including other sub-folder contents)
    Windows.Storage.AccessCache.StorageApplicationPermissions.
    FutureAccessList.AddOrReplace("PickedFolderToken", folder);
    this.textBlock.Text = "Picked folder: " + folder.Name;
}
else
{
    this.textBlock.Text = "Operation cancelled.";
}

ヒント

アプリがピッカーでファイルまたはフォルダーにアクセスするたびに、ファイルやフォルダーをアプリの FutureAccessList または MostRecentlyUsedList に追加して、ファイルやフォルダーを追跡します。Whenever your app accesses a file or folder through a picker, add it to your app's FutureAccessList or MostRecentlyUsedList to keep track of it. これらのリストの使用の詳細については、「最近使ったファイルやフォルダーを追跡する方法」をご覧ください。You can learn more about using these lists in How to track recently-used files and folders.