次の方法で共有


ピッカーを使用してファイルを保存する

重要な API

FileSavePicker を使用して、ユーザーがアプリでファイルを保存する名前と場所を指定できるようにします。

 完全なサンプルについては、ファイル ピッカーのサンプルを参照してください。

デスクトップ アプリ (WinUI 3 アプリを含む) では、 Windows.Storage.Pickers のファイルピッカーとフォルダー ピッカーを使用できます。 ただし、デスクトップ アプリの実行に昇格が必要な場合は、これらの API が昇格されたアプリで使用されるように設計されていないため、別のアプローチが必要になります。 例については、「 FileSavePicker」を参照してください。

[前提条件]

  • ユニバーサル Windows プラットフォーム (UWP) アプリの非同期プログラミングについて

    C# または Visual Basic で非同期アプリを記述する方法については、「C# または Visual Basicでの非同期 API の呼び出し に関するページを参照してください。 C++ で非同期アプリを記述する方法については、「C++での非同期プログラミング」を参照してください。

  • 場所へのアクセス許可

    ファイル アクセス許可を参照してください。

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の 3 つのプロパティを設定します。

    • ユーザーがドキュメントまたはテキスト ファイルを保存しているため、サンプルでは、LocalFolderを使用して SuggestedStartLocation をアプリのローカル フォルダー 設定します。 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 の

ファイル、フォルダー、およびライブラリ

ファイル ピッカー コントラクトとの統合

ファイルの作成、書き込み、読み取り