Открытие файлов и папок с помощью средства выбора
Важные API
Доступ к файлам и папкам, позволяя пользователю взаимодействовать с средство выбора. Классы FileOpenPicker и FileSavePicker можно использовать для доступа к файлам и FolderPicker для доступа к папке.
Примечание.
Полный пример см. в примере средства выбора файлов.
Примечание.
В классическом приложении (включая приложения WinUI 3), можно использовать средства выбора файлов и папок из Windows.Storage.Pickers. Однако если классическое приложение требует повышения прав для запуска, вам потребуется другой подход, так как эти API не предназначены для использования в приложении с повышенными привилегиями. Пример см. в разделе FileSavePicker.
Необходимые компоненты
Общее представление об асинхронном программировании для приложений универсальной платформы Windows (UWP).
Вы можете узнать, как писать асинхронные приложения в C# или Visual Basic, см . статью "Вызов асинхронных API" в C# или Visual Basic. Сведения о написании асинхронных приложений в C++см. в статье "Асинхронное программирование" в C++.
Права доступа к расположению
Пользовательский интерфейс средства выбора файлов
Средство выбора файлов отображает сведения для ориентации пользователей и обеспечивает согласованный интерфейс при открытии или сохранении файлов.
Эти сведения включают:
- Текущее расположение
- Элемент или элементы, выбранные пользователем
- Дерево расположений, к которым пользователь может перейти. К этим расположениям относятся расположения файловой системы( например, папка "Музыка" или "Загрузки", а также приложения, реализующие контракт средства выбора файлов (например, "Камера", "Фотографии" и "Microsoft OneDrive").
Почтовое приложение может отобразить средство выбора файлов для пользователя, чтобы выбрать вложения.
Как работают средства выбора
С помощью средства выбора приложение может получать доступ, просматривать и сохранять файлы и папки в системе пользователя. Приложение получает эти выборы в качестве объектов StorageFile и StorageFolder , с которыми можно работать.
Средство выбора использует единый унифицированный интерфейс, чтобы разрешить пользователю выбирать файлы и папки из файловой системы или из других приложений. Файлы, выбранные из других приложений, похожи на файлы из файловой системы: они возвращаются в виде объектов StorageFile . Как правило, приложение может работать с ними так же, как и другие объекты. Другие приложения предоставляют файлы, участвующие в контрактах средства выбора файлов. Если вы хотите, чтобы приложение предоставило файлы, расположение сохранения или обновления файлов другим приложениям, см. статью "Интеграция с контрактами средства выбора файлов".
Например, можно вызвать средство выбора файлов в приложении, чтобы пользователь мог открыть файл. Это делает приложение вызывающим приложением. Средство выбора файлов взаимодействует с системой и (или) другими приложениями, чтобы разрешить пользователю перемещаться и выбирать файл. Когда пользователь выбирает файл, средство выбора файлов возвращает этот файл в приложение. Ниже приведен процесс выбора файла из приложения, например OneDrive.
Выберите один файл: полный список кода
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.";
}
Выберите один файл: пошаговые шаги
Использование средства выбора файлов включает создание и настройку объекта средства выбора файлов, а затем отображение средства выбора файлов, чтобы пользователь смог выбрать один или несколько элементов.
Создание и настройка 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.
Отображение 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 приложения для отслеживания. Дополнительные сведения об использовании этих списков см. в статье "Отслеживание недавно используемых файлов и папок".