FileSaver
O FileSaver
proporciona a capacidade de selecionar a pasta de destino e salvar arquivos no sistema de arquivos.
As seguintes pré-condições são necessárias para o FileSaver
:
Se o nível de API do seu dispositivo de destino for menor que 33, adicione permissões a AndroidManifest.xml
:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Quando seu aplicativo tem como destino uma API de Android de nível 34 ou superior, nenhuma permissão adicional é necessária.
Para obter mais informações sobre a permissão de armazenamento do Android, consulte a documentação do Android sobre Manifest.permission
Sintaxe
C#
O FileSaver
pode ser usado da seguinte maneira em 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);
}
}
ou, caso o arquivo seja bastante grande e leve algum tempo para ser salvo, talvez você esteja interessado em saber o progresso:
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);
}
}
Métodos
Método | Descrição |
---|---|
SaveAsync | Solicita permissão, permite selecionar uma pasta e salvar arquivos no sistema de arquivos. |
FileSaverResult
O resultado retornado do método SaveAsync
. Isso pode ser usado para verificar se o salvamento foi bem-sucedido, verificar onde o arquivo foi salvo e também acessar quaisquer exceções que possam ter ocorrido durante o salvamento.
Propriedades
Propriedade | Type | Descrição |
---|---|---|
FilePath | string |
O local no disco em que o arquivo foi salvo. |
Exceção | Exception |
Obtém o Exception se a operação de salvamento falhar. |
IsSuccessful | bool |
Obtém um valor que determina se a operação foi bem-sucedida. |
Métodos
Método | Descrição |
---|---|
EnsureSuccess | Verifica se a operação de salvamento foi bem-sucedida. |
Aviso
EnsureSuccess
gerará uma Exception
caso a operação de salvamento não seja bem-sucedida.
Registro de dependência
Caso queira injetar um serviço, primeiro é necessário cadastrá-lo.
Atualize MauiProgram.cs
com as próximas alterações:
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();
}
}
Agora você pode injetar o serviço da seguinte maneira:
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);
}
}
Exemplos
Você pode encontrar um exemplo de FileSaver
em ação no Aplicativo de exemplo do .NET MAUI Community Toolkit.
API
O código-fonte do FileSaver
pode ser encontrado no repositório GitHub do .NET MAUI Community Toolkit.
.NET MAUI Community Toolkit