Freigeben über


FileSaver

FileSaver bietet die Möglichkeit, den Zielordner auszuwählen und Dateien im Dateisystem zu speichern.

Screenshot eines FileSaver unter macOS

Die folgenden Voraussetzungen sind für den FileSaver erforderlich:

Wenn ihre Zielgeräte-API eine Ebene kleiner als 33 hat, fügen Sie Berechtigungen für AndroidManifest.xml hinzu:

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

Wenn Ihre App auf Android-API der Ebene 34 und höher ausgerichtet ist, sind keine zusätzlichen Berechtigungen erforderlich.

Weitere Informationen zur Android-Speicherberechtigung finden Sie in der Android-Dokumentation zu Manifest.permission

Syntax

C#

FileSaver kann wie folgt in C# verwendet werden:

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);
    }
}

oder falls die Datei ziemlich groß ist und einige Zeit in Anspruch nimmt, um gespeichert zu werden, möchten Sie möglicherweise den Fortschritt sehen:

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);
    }
}

Methoden

Methode Beschreibung
SaveAsync Fordert Berechtigung an, ermöglicht das Auswählen eines Ordners und das Speichern von Dateien im Dateisystem.

FileSaverResult

Das Ergebnis, das von der SaveAsync-Methode zurückgegeben wurde. Dies kann verwendet werden zum Überprüfen, ob das Speichern erfolgreich war, wo die Datei gespeichert wurde und kann auch auf alle Ausnahmen zugreifen, die während des Speicherns aufgetreten sind.

Eigenschaften

Eigenschaft Typ BESCHREIBUNG
FilePath string Der Speicherort auf dem Datenträger, auf dem die Datei gespeichert wurde.
Exception Exception Ruft Exception ab, wenn der Speichervorgang fehlschlägt.
IsSuccessful bool Ruft einen Wert ab, der angibt, ob der Vorgang erfolgreich war.

Methoden

Methode Beschreibung
EnsureSuccess Überprüft, ob der Speichervorgang erfolgreich war.

Warnung

EnsureSuccess löst eine Exception aus, wenn der Speichervorgang nicht erfolgreich ist.

Abhängigkeitsregistrierung

Wenn Sie einen Dienst einfügen möchten, müssen Sie ihn zuerst registrieren. Aktualisieren Sie MauiProgram.cs mit den nächsten Änderungen:

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();
    }
}

Jetzt können Sie den Dienst wie folgt einfügen:

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);
	}
}

Beispiele

Ein konkretes Beispiel für FileSaver in Aktion finden Sie in der Beispielanwendung für das .NET MAUI Community Toolkit.

API

Sie finden den Quellcode für FileSaver über das GitHub-Repository für das .NET MAUI Community Toolkit.