Поделиться через


Сохранение файла с помощью средства выбора

Важные API

Используйте FileSavePicker , чтобы пользователи указали имя и расположение, в котором нужно сохранить файл.

Примечание.

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

Примечание.

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

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

FileSavePicker: пошаговые шаги

Используйте FileSavePicker, чтобы пользователи могли указать имя, тип и расположение файла для сохранения. Создание, настройка и отображение объекта средства выбора файлов, а затем сохранение данных с помощью возвращаемого объекта StorageFile , представляющего выбранный файл.

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

    • Так как пользователь сохраняет документ или текстовый файл, образец задает ПредложениеStartLocation в локальную папку приложения с помощью LocalFolder. Задайте для параметра SuggestedStartLocation расположение, соответствующее типу сохраненного файла, например "Музыка", "Изображения", "Видео" или "Документы". В начальном расположении пользователь может перейти к другим расположениям.

    • Так как мы хотим убедиться, что приложение может открыть файл после его сохранения, мы используем FileTypeChoices для указания типов файлов, поддерживаемых примером (документы и текстовые файлы Microsoft Word). Убедитесь, что все указанные типы файлов поддерживаются приложением. Пользователи смогут сохранить файл как любой из указанных типов файлов. Они также могут изменить тип файла, выбрав другой из указанных типов файлов. Первый выбор типа файла в списке будет выбран по умолчанию: для управления этим, задайте свойство DefaultFileExtension.

    Примечание.

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

    • Чтобы сохранить ввод пользователя, в примере задается значение SuggestedFileName. Укажите предлагаемое имя файла, соответствующее сохраненным файлам. Например, например Word, можно предложить существующее имя файла, если есть одно, или первая строка документа, если пользователь сохраняет файл, который еще не имеет имени.

    Примечание.

     Объекты FileSavePicker отображают средство выбора файлов с помощью режима просмотра PickerViewMode.List.

  2. Отобразите 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.";
    }
    

В примере проверяется, является ли файл допустимым и записывает в него собственное имя файла. См. также статью "Создание, запись и чтение файла".

Совет

 Следует всегда проверять сохраненный файл на допустимость, прежде чем выполнять дальнейшую обработку. Затем вы можете сохранить содержимое в файл в соответствии с вашим приложением и указать соответствующее поведение, если выбранный файл недопустим.

См. также

Windows.Storage.Pickers

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

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

Создание, запись и чтение файла