Примечание
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Основные API
Используйте FileSavePicker, чтобы пользователи указали имя и место, куда ваше приложение должно сохранить файл.
Замечание
В классическом приложении (включая приложения WinUI 3), можно использовать средства выбора файлов и папок из Windows.Storage.Pickers. Однако если классическое приложение требует повышения прав для запуска, вам потребуется другой подход, так как эти API не предназначены для использования в приложении с повышенными привилегиями. Пример см. в разделе FileSavePicker.
Предпосылки
Общие сведения о асинхронном программировании для приложений универсальной платформы Windows (UWP)
Вы можете узнать, как писать асинхронные приложения в C# или Visual Basic, см. в статье Вызов асинхронных API в C# или Visual Basic. Чтобы узнать, как писать асинхронные приложения в C++, см. раздел Асинхронное программирование в C++.
Разрешения доступа к местоположению
FileSavePicker: пошаговые шаги
Используйте FileSavePicker , чтобы пользователи могли указать имя, тип и расположение файла для сохранения. Создание, настройка и отображение объекта средства выбора файлов, а затем сохранение данных с помощью возвращаемого объекта StorageFile , представляющего выбранный файл.
FileSavePicker: создание и настройка
var savePicker = new Windows.Storage.Pickers.FileSavePicker(); savePicker.SuggestedStartLocation = Windows.Storage.Pickers.PickerLocationId.DocumentsLibrary; // Dropdown of file types the user can save the file as savePicker.FileTypeChoices.Add("Plain Text", new List<string>() { ".txt" }); // Default file name if the user does not type one in or select a file to replace savePicker.SuggestedFileName = "New Document";
Задайте свойства объекта средства выбора файлов, относящиеся к пользователям и приложению. В этом примере задаются три свойства: SuggestedStartLocation, FileTypeChoices и SuggestedFileName.
Так как наш пользователь сохраняет документ или текстовый файл, образец задает SuggestedStartLocation в локальную папку приложения с помощью LocalFolder. Укажите для #SuggestedStartLocation расположение, подходящее для типа сохраняемого файла, например «Музыка», «Рисунки», «Видео» или «Документы». Из начальной точки пользователь может перемещаться к другим местам.
Так как мы хотим убедиться, что приложение может открыть файл после его сохранения, мы используем FileTypeChoices для указания типов файлов, поддерживаемых примером (документы и текстовые файлы Microsoft Word). Убедитесь, что все указанные типы файлов поддерживаются приложением. Пользователи смогут сохранить файл как любой из указанных типов файлов. Они также могут изменить тип файла, выбрав другой из указанных типов файлов. Первый выбор типа файла в списке будет выбран по умолчанию: для управления этим, задайте свойство DefaultFileExtension .
Замечание
Средство выбора файлов также использует текущий выбранный тип файла для фильтрации, чтобы пользователю отображались только файлы с соответствующими типами.
- Чтобы сократить объем вводимых пользователем данных, в примере задается SuggestedFileName. Укажите предлагаемое имя файла, соответствующее сохраненным файлам. Например, например Word, можно предложить существующее имя файла, если есть одно, или первая строка документа, если пользователь сохраняет файл, который еще не имеет имени.
Замечание
объекты FileSavePicker отображают средство выбора файлов с помощью режима представления PickerViewMode.List.
Отобразите FileSavePicker и сохраните в выбранном файле
Отобразите средство выбора файлов, вызвав PickSaveFileAsync. После того как пользователь указывает имя, тип файла и расположение, а также подтверждает сохранение файла, PickSaveFileAsync возвращает объект StorageFile , представляющий сохраненный файл. Вы можете записать и обработать этот файл теперь, когда у вас есть доступ на чтение и запись.
Windows.Storage.StorageFile file = await savePicker.PickSaveFileAsync(); if (file != null) { // Prevent updates to the remote version of the file until // we finish making changes and call CompleteUpdatesAsync. Windows.Storage.CachedFileManager.DeferUpdates(file); // write to file await Windows.Storage.FileIO.WriteTextAsync(file, "file contents"); // Let Windows know that we're finished changing the file so // the other app can update the remote version of the file. // Completing updates may require Windows to ask for user input. Windows.Storage.Provider.FileUpdateStatus status = await Windows.Storage.CachedFileManager.CompleteUpdatesAsync(file); if (status == Windows.Storage.Provider.FileUpdateStatus.Complete) { this.textBlock.Text = "File " + file.Name + " was saved."; } else { this.textBlock.Text = "File " + file.Name + " couldn't be saved."; } } else { this.textBlock.Text = "Operation cancelled."; }
Пример проверяет, действителен ли файл, и записывает в него его собственное имя. См. также Создание, запись и чтение файла.
Подсказка
Перед выполнением любой другой обработки всегда следует проверить сохраненный файл, чтобы убедиться, что он действителен. Затем вы можете сохранить содержимое в файл в соответствии с вашим приложением и указать соответствующее поведение, если выбранный файл недопустим.