Salvare un file con una selezione

API importanti

Usa FileSavePicker per permettere agli utenti di specificare il nome e il percorso in cui vogliono che l'app salvi un file.

Nota

 Per un esempio completo, vedere l'Esempio di selezione file.

Nota

in un'app desktop (che includa app WinUI 3) è possibile usare selezioni di file e cartelle da Windows.Storage.Pickers. Tuttavia, se l'app desktop richiede l'elevazione per l'esecuzione, è necessario un approccio diverso perché queste API non sono progettate per essere usate in un'app con privilegi elevati. Per un esempio, vedere FileSavePicker.

Prerequisiti

FileSavePicker: istruzioni dettagliate

Usare un FileSavePicker in modo che gli utenti possano specificare il nome, il tipo e il percorso di un file da salvare. Creare, personalizzare e visualizzare un oggetto selezione file e quindi salvare i dati tramite l'oggetto StorageFile restituito che rappresenta il file selezionato.

  1. Creare e personalizzare 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";
    

    Impostare le proprietà dell'oggetto selezione file rilevanti per gli utenti e per l'app. In questo esempio vengono impostate tre proprietà: SuggestedStartLocation, FileTypeChoices e SuggestedFileName.

    • Poiché l'utente salva un documento o un file di testo, l'esempio imposta SuggestedStartLocation nella cartella locale dell'app usando LocalFolder. Impostare SuggestedStartLocation su una posizione appropriata per il tipo di file salvato, ad esempio Musica, Immagini, Video o Documenti. Gli utenti possono spostarsi in altre posizioni dalla posizione iniziale.

    • Poiché ci si vuole assicurare che l'app possa aprire il file dopo il salvataggio, viene usato FileTypeChoices per specificare i tipi di file supportati dall'esempio (documenti e file di testo di Microsoft Word). Assicurarsi che tutti i tipi di file specificati siano supportati dall'app. Gli utenti potranno salvare il file come qualsiasi tipo di file specificato. Possono anche modificare il tipo di file selezionando un altro dei tipi di file specificati. La prima scelta del tipo di file nell'elenco verrà selezionata per impostazione predefinita: per controllare tale opzione, impostare la proprietà DefaultFileExtension.

    Nota

     La selezione file usa il tipo di file attualmente selezionato anche per filtrare i file da visualizzare in modo che l'utente veda solo i tipi corrispondenti ai tipi di file selezionati.

    • Per ridurre la necessità di digitazione da parte dell'utente, l'esempio imposta un SuggestedFileName. Impostare il nome file suggerito pertinente per il file in fase di salvataggio. Ad esempio, come in Word, è possibile suggerire il nome di file esistente se presente o la prima riga di un documento se l'utente salva un file che non ha ancora un nome.

    Nota

     Gli oggetti FileSavePicker visualizzano la selezione file mediante la modalità di visualizzazione PickerViewMode.List.

  2. Visualizzare FileSavePicker e salvare il file selezionato

    Visualizzare la selezione file chiamando PickSaveFileAsync. Dopo che l'utente specifica il nome, il tipo di file e il percorso e conferma di voler salvare il file, PickSaveFileAsync restituisce un oggetto StorageFile che rappresenta il file salvato. È possibile acquisire ed elaborare questo file ora che si ha accesso in lettura e scrittura al file.

    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.";
    }
    

Nell'esempio viene verificato che il file sia valido e ne viene scritto il nome. Vedere anche Creazione, scrittura e lettura di un file.

Suggerimento

 Ti consigliamo di controllare sempre il file salvato per assicurarti che sia valido prima di eseguire qualsiasi altra operazione. È quindi possibile salvare il contenuto nel file in base alle esigenze dell'app e fornire un comportamento appropriato se il file selezionato non è valido.

Vedi anche

Windows.Storage.Pickers

File, cartelle e raccolte

Integrazione con contratti di selezione file

Creazione, scrittura e lettura di un file