Condividi tramite


FileSaver

FileSaver consente di selezionare una cartella di destinazione e salvare i file nel file system.

Screenshot di un fileSaver in macOS

Per l'oggetto FileSaversono necessarie le precondizioni seguenti:

Se il livello API del dispositivo di destinazione è minore di 33, aggiungere autorizzazioni a AndroidManifest.xml:

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Quando l'app è destinata al livello API Android 34 e versioni successiva, non sono necessarie autorizzazioni aggiuntive.

Per altre informazioni sull'autorizzazione di archiviazione Android, vedere la documentazione di Android relativa a Manifest.permission

Sintassi

C#

Può FileSaver essere usato come indicato di seguito in C#:

async Task SaveFile(CancellationToken cancellationToken)
{
    using var stream = new MemoryStream(Encoding.Default.GetBytes("Hello from the Community Toolkit!"));
    var fileSaverResult = await FileSaver.Default.SaveAsync("test.txt", stream, cancellationToken);
    if (fileSaverResult.IsSuccessful)
    {
        await Toast.Make($"The file was saved successfully to location: {fileSaverResult.FilePath}").Show(cancellationToken);
    }
    else
    {
        await Toast.Make($"The file was not saved successfully with error: {fileSaverResult.Exception.Message}").Show(cancellationToken);
    }
}

o nel caso in cui il file sia piuttosto grande e richiede tempo per essere salvato, potrebbe essere interessato a conoscere lo stato di avanzamento:

async Task SaveFile(CancellationToken cancellationToken)
{
    using var stream = new MemoryStream(Encoding.Default.GetBytes("Hello from the Community Toolkit!"));
    var saverProgress = new Progress<double>(percentage => ProgressBar.Value = percentage);
    var fileSaverResult = await FileSaver.Default.SaveAsync("test.txt", stream, saverProgress, cancellationToken);
    if (fileSaverResult.IsSuccessful)
    {
        await Toast.Make($"The file was saved successfully to location: {fileSaverResult.FilePath}").Show(cancellationToken);
    }
    else
    {
        await Toast.Make($"The file was not saved successfully with error: {fileSaverResult.Exception.Message}").Show(cancellationToken);
    }
}

Metodi

metodo Descrizione
SaveAsync Richiede l'autorizzazione, consente di selezionare una cartella e salvare i file nel file system.

FileSaverResult

Risultato restituito dal SaveAsync metodo . Può essere usato per verificare se il salvataggio è stato eseguito correttamente, controllare dove è stato salvato il file e accedere anche a eventuali eccezioni che potrebbero essersi verificate durante il salvataggio.

Proprietà

Proprietà Type Descrizione
FilePath string Percorso sul disco in cui è stato salvato il file.
Eccezione Exception Ottiene se Exception l'operazione di salvataggio non riesce.
IsSuccessful bool Ottiene un valore che determina se l'operazione ha avuto esito positivo.

Metodi

metodo Descrizione
EnsureSucces Verifica se l'operazione di salvataggio è riuscita.

Avviso

EnsureSuccess genererà un'eccezione Exception se l'operazione di salvataggio non riesce.

Registrazione delle dipendenze

Nel caso in cui si voglia inserire un servizio, è prima necessario registrarlo. Eseguire l'aggiornamento MauiProgram.cs con le modifiche successive:

public static class MauiProgram
{
    public static MauiApp CreateMauiApp()
    {
        var builder = MauiApp.CreateBuilder();
        builder
            .UseMauiApp<App>()
			.UseMauiCommunityToolkit();

		builder.Services.AddSingleton<IFileSaver>(FileSaver.Default);
        return builder.Build();
    }
}

Ora è possibile inserire il servizio come segue:

public partial class MainPage : ContentPage
{
    private readonly IFileSaver fileSaver;

	public MainPage(IFileSaver fileSaver)
	{
		InitializeComponent();
        this.fileSaver = fileSaver;
	}
	
	public async void SaveFile(object sender, EventArgs args)
	{
		using var stream = new MemoryStream(Encoding.Default.GetBytes("Hello from the Community Toolkit!"));
        var fileSaverResult = await fileSaver.SaveAsync("test.txt", stream, cancellationToken);
        fileSaverResult.EnsureSuccess();
        await Toast.Make($"File is saved: {fileSaverResult.FilePath}").Show(cancellationToken);
	}
}

Esempi

È possibile trovare un esempio di FileSaver in azione nell'applicazione di esempio .NET MAUI Community Toolkit.

API

È possibile trovare il codice sorgente per FileSaver over nel repository GitHub di .NET MAUI Community Toolkit.