선택기를 사용하여 파일 및 폴더 열기Open files and folders with a picker

중요 APIImportant APIs

사용자가 선택기를 조작할 수 있도록 하여 파일 및 폴더에 액세스합니다.Access files and folders by letting the user interact with a picker. FileOpenPickerFileSavePicker 클래스를 사용하여 파일에 액세스하고 FolderPicker 클래스를 사용하여 폴더에 액세스할 수 있습니다.You can use the FileOpenPicker and FileSavePicker classes to access files, and the FolderPicker to access a folder.

참고

 전체 샘플에 대해서는 파일 선택기 샘플을 참조하세요. 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.

두 개의 파일이 열기 위해 선택되어 있는 파일 선택기

선택기 작동 방식How pickers work

선택기를 통해 앱은 사용자 시스템의 파일 및 폴더를 액세스하고 찾아보고 저장할 수 있습니다.With a picker your app can access, browse, and save files and folders on the user's system. 앱은 사용자가 작업할 수 있도록 StorageFileStorageFolder 개체로 이러한 선택을 수신합니다.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.

한 앱이 파일 선택기를 두 앱 간의 인터페이스로 사용하여 다른 앱에서 열 파일을 가져오는 프로세스를 보여 주는 다이어그램입니다.

단일 파일 선택: 전체 코드 목록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.";
}

단일 파일 선택: 단계별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.

    이 예제에서는 세 가지 속성을 설정하여 사용자가 선택할 수 있는 편리한 위치에 사진의 풍부한 시각적 개체를 만듭니다. ViewMode, SuggestedStartLocationFileTypeFilter.This 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을 사진으로 설정하면 사용자가 사진을 찾을 수 있을 것 같은 위치에서 시작됩니다.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.