Udostępnij za pośrednictwem


FileSaver

Program FileSaver umożliwia wybranie folderu docelowego i zapisanie plików w systemie plików.

Zrzut ekranu przedstawiający aplikację FileSaver w systemie macOS

Następujące warunki wstępne są wymagane dla elementu FileSaver:

Jeśli docelowy poziom interfejsu API urządzenia jest mniejszy niż 33, dodaj uprawnienia do usługi AndroidManifest.xml:

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

Gdy aplikacja jest przeznaczona dla interfejsu API systemu Android na poziomie 34 i nowszym, nie są wymagane żadne dodatkowe uprawnienia.

Aby uzyskać więcej informacji na temat uprawnień magazynu systemu Android, zapoznaj się z dokumentacją systemu Android dotyczącą manifestu.permission

Składnia

C#

Można FileSaver go użyć w następujący sposób w języku 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);
    }
}

lub w przypadku, gdy plik jest dość duży i zajmuje trochę czasu na zapisanie, możesz być zainteresowany poznaniem postępu:

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

Metody

Metoda opis
SaveAsync Pyta o uprawnienie, umożliwia wybranie folderu i zapisanie plików w systemie plików.

FileSaverResult

Wynik zwrócony z SaveAsync metody . Może to służyć do sprawdzania, czy zapisywanie zakończyło się pomyślnie, sprawdzanie, gdzie plik został zapisany, a także uzyskiwanie dostępu do wszelkich wyjątków, które mogły wystąpić podczas zapisywania.

Właściwości

Właściwości Type Opis
Filepath string Lokalizacja na dysku, na którym został zapisany plik.
Wyjątek Exception Pobiera wartość Exception , jeśli operacja zapisywania zakończy się niepowodzeniem.
IsSuccessful bool Pobiera wartość określającą, czy operacja zakończyła się pomyślnie.

Metody

Metoda opis
EnsureSuccess Sprawdza, czy operacja zapisywania zakończyła się pomyślnie.

Ostrzeżenie

EnsureSuccess wyrzuci błąd Exception , jeśli operacja zapisywania nie powiedzie się.

Rejestracja zależności

Jeśli chcesz wstrzyknąć usługę, najpierw musisz ją zarejestrować. Zaktualizuj MauiProgram.cs przy użyciu następnych zmian:

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

Teraz możesz wstrzyknąć usługę w następujący sposób:

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

Przykłady

Przykład działania FileSaver można znaleźć w przykładzie przykładowym zestawu narzędzi .NET MAUI Community Toolkit.

interfejs API

Kod źródłowy można FileSaver znaleźć w repozytorium GitHub zestawu narzędzi .NET MAUI Community Toolkit.