Открытие файлов и папок с помощью средства выбора

Важные API

Доступ к файлам и папкам, позволяя пользователю взаимодействовать с средство выбора. Классы FileOpenPicker и FileSavePicker можно использовать для доступа к файлам и FolderPicker для доступа к папке.

Примечание.

 Полный пример см. в примере средства выбора файлов.

Примечание.

В классическом приложении (включающем приложения WinUI 3), можно использовать средства выбора файлов и папок из Windows.служба хранилища. Средства выбора. Однако если классическое приложение требует повышения прав для запуска, вам потребуется другой подход, так как эти API не предназначены для использования в приложении с повышенными привилегиями. Пример см. в разделе FileSavePicker.

Необходимые компоненты

Пользовательский интерфейс средства выбора файлов

Средство выбора файлов отображает сведения для ориентации пользователей и обеспечивает согласованный интерфейс при открытии или сохранении файлов.

Эти сведения включают:

  • Текущее расположение
  • Элемент или элементы, выбранные пользователем
  • Дерево расположений, к которым пользователь может перейти. К этим расположениям относятся расположения файловой системы ( например, папка "Музыка" или "Загрузки"), а также приложения, реализующие контракт средства выбора файлов (например, Камера, Фотографии и Microsoft OneDrive).

Почтовое приложение может отобразить средство выбора файлов для пользователя, чтобы выбрать вложения.

a file picker with two files picked to be opened.

Как работают средства выбора

С помощью средства выбора приложение может получать доступ, просматривать и сохранять файлы и папки в системе пользователя. Приложение получает эти выборы как объекты служба хранилища File и служба хранилища Folder, с которыми можно работать.

Средство выбора использует единый унифицированный интерфейс, чтобы разрешить пользователю выбирать файлы и папки из файловой системы или из других приложений. Файлы, выбранные из других приложений, похожи на файлы из файловой системы: они возвращаются как объекты служба хранилища File. Как правило, приложение может работать с ними так же, как и другие объекты. Другие приложения предоставляют файлы, участвующие в контрактах средства выбора файлов. Если вы хотите, чтобы приложение предоставило файлы, расположение сохранения или обновления файлов другим приложениям, см. статью "Интеграция с контрактами средства выбора файлов".

Например, можно вызвать средство выбора файлов в приложении, чтобы пользователь мог открыть файл. Это делает приложение вызывающим приложением. Средство выбора файлов взаимодействует с системой и (или) другими приложениями, чтобы разрешить пользователю перемещаться и выбирать файл. Когда пользователь выбирает файл, средство выбора файлов возвращает этот файл в приложение. Ниже приведен процесс выбора файла из приложения, например OneDrive.

a diagram that shows the process of one app getting a file to open from another app using the file picker as an interface bewteen the two apps.

Выберите один файл: полный список кода

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. Создание и настройка 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");
    

    Задайте свойства объекта средства выбора файлов, относящиеся к пользователям и приложениям.

    В этом примере создается полнофункциональная визуализация изображений в удобном расположении, из которых пользователь может выбрать, задав три свойства: ViewMode, SuggestedStartLocation и FileTypeFilter.

    • Задание для свойства ViewMode значения Thumbnail перечисления PickerViewMode создает сложное визуальное представление за счет эскизов изображений, представляющих файлы в средстве выбора файлов. Это делается для выбора визуальных файлов, таких как изображения или видео. В противном случае используйте PickerViewMode.List. Гипотетическое почтовое приложение с функциями "Присоединить рисунок" или "Видео" и "Присоединить документ" позволяет задать viewMode, соответствующий функции, прежде чем отображать средство выбора файлов.

    • Установка предложенияStartLocation to Pictures с помощью PickerLocationId.PicturesLibrary запускает пользователя в расположении, где они, скорее всего, будут находить изображения. Задайте для параметра SuggestedStartLocation расположение, подходящее для выбранного типа файла, например "Музыка", "Рисунки", "Видео" или "Документы". В начальном расположении пользователь может перейти к другим расположениям.

    • Использование FileTypeFilter для указания типов файлов позволяет пользователю сосредоточиться на выборе нужных файлов. Чтобы заменить предыдущие типы файлов в FileTypeFilter новыми записями, используйте ReplaceAll вместо Add.

  2. Отображение FileOpenPicker

    • Выбор одного файла

      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.";
      }
      
    • Выбор нескольких файлов

      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.";
      }
      

Выберите папку: полный список кода

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 приложения для отслеживания. Дополнительные сведения об использовании этих списков см. в статье "Отслеживание недавно используемых файлов и папок".

См. также

Windows.Storage.Pickers

Файлы, папки и библиотеки

Интеграция с контрактами средства выбора файлов