FileSaver
FileSaver
proporciona la capacidad de seleccionar una carpeta de destino y guardar archivos en el sistema de archivos.
Las siguientes condiciones previas son necesarias para FileSaver
:
Si el nivel de API de dispositivo de destino es menor que 33, agregue permisos a AndroidManifest.xml
:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
Cuando la aplicación tiene como destino el nivel de API de Android 34 y versiones posteriores, no se requieren permisos adicionales.
Para obtener más información sobre el permiso de almacenamiento de Android, consulte la documentación de Android sobre Manifest.permission
Sintaxis
C#
El FileSaver
se puede usar de la siguiente manera en 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 en caso de que el archivo sea bastante grande y tarde un poco en guardarse, es posible que le interese conocer el progreso:
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 | Descripción |
---|---|
SaveAsync | Pide permiso, permite seleccionar una carpeta y guardar archivos en el sistema de archivos. |
FileSaverResult
Resultado devuelto por el método SaveAsync
. Esto se puede usar para comprobar si el guardado se realizó correctamente, comprobar dónde se guardó el archivo y también acceder a las excepciones que se pueden haber producido durante el guardado.
Propiedades
Propiedad | Tipo | Descripción |
---|---|---|
FilePath | string |
Ubicación en el disco donde se guardó el archivo. |
Exception | Exception |
Obtiene el Exception si se produce un error en la operación de guardado. |
IsSuccessful | bool |
Obtiene un valor que determina si la operación se realizó correctamente. |
Métodos
método | Descripción |
---|---|
EnsureSuccess | Comprueba si la operación de guardado se realizó correctamente. |
Advertencia
EnsureSuccess
producirá un Exception
si la operación de guardado no se realiza correctamente.
Registro de dependencias
En caso de que desee insertar un servicio, primero debe registrarlo.
Actualice MauiProgram.cs
con los siguientes cambios:
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();
}
}
Ahora puede insertar el servicio de la siguiente manera:
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);
}
}
Ejemplos
Puede encontrar un ejemplo de FileSaver
en acción en la aplicación de ejemplo del Kit de herramienta de la comunidad de .NET MAUI.
API
Puede encontrar el código fuente de FileSaver
en el repositorio de GitHub del Kit de herramientas de la comunidad de .NET MAUI.
.NET MAUI Community Toolkit