共用方式為


利用選擇器儲存檔案

重要的應用程式介面

使用 FileSavePicker,讓使用者指定要將檔案儲存的名稱和位置。

備註

 如需完整的範例,請參閱 檔案選擇器範例

備註

在傳統型應用程式 (包括 WinUI 應用程式) 中,您可以使用 Microsoft.Windows.Storage.Pickers 命名空間來存取檔案和資料夾選擇器。 此命名空間可在 Windows 應用程式 SDK 1.8 版和更新版本中使用。 此命名空間中的 API 旨在與 WinUI 應用程式無縫協作,在不同的應用程式類型之間提供一致的體驗。

如有必要,您仍然可以使用 Windows.Storage.Pickers 中的檔案和資料夾選擇器。 不過,如果桌面應用程式需要提升許可權才能執行,您將需要不同的方法,因為這些 API 並未設計用於提升許可權的應用程式。 如需範例,請參閱 FileSavePicker

先決條件

  • 瞭解通用 Windows 平臺 (UWP) app 的異步程式設計

    您可以瞭解如何在 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";
    

    在與使用者和應用程式相關的檔案選擇器對象上設定屬性。 此範例會設定三個屬性: SuggestedStartLocationFileTypeChoicesSuggestedFileName

    • 因為我們的使用者正在儲存檔或文本檔,因此範例會使用LocalFolderSuggestedStartLocation 設定為應用程式的本機資料夾。 將 SuggestedStartLocation 設定為適合所儲存檔類型的位置,例如 Music、Pictures、Videos 或 Documents。 從開始位置,用戶可以流覽至其他位置。

    • 由於我們想要確定應用程式可以在儲存盤案后開啟檔案,因此我們會使用 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

檔案、資料夾和連結庫

與檔案選擇器合約整合

建立、寫入和讀取檔案