FileSaver
FileSaver
可讓您選取目標資料夾,並將檔案儲存至檔案系統。
需要 FileSaver
下列先決條件:
如果您的目標裝置 API 層級小於 33,請將權限新增至 AndroidManifest.xml
:
<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
當您的應用程式以Android API層級34和上層為目標時,不需要其他許可權。
如需 Android 記憶體許可權的詳細資訊,請參閱有關 Manifest.permission 的 Android 檔
語法
C#
FileSaver
可以在 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);
}
}
或者,如果檔案相當大,而且需要一些時間才能儲存,您可能有興趣了解進度:
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);
}
}
方法
方法 | 描述 |
---|---|
SaveAsync | 要求許可權,允許選取資料夾並將檔案儲存至檔案系統。 |
FileSaverResult
從 SaveAsync
方法傳回的結果。 這可用來確認儲存是否成功、檢查儲存盤案的位置,以及存取儲存期間可能發生的任何例外狀況。
屬性
屬性 | 類型 | 描述 |
---|---|---|
FilePath | string |
儲存盤案的磁碟位置。 |
例外狀況 | Exception |
Exception 如果儲存工作失敗,則取得 。 |
IsSuccessful | bool |
取得值,判斷作業是否成功。 |
方法
方法 | 描述 |
---|---|
EnsureSuccess | 驗證儲存作業是否成功。 |
警告
EnsureSuccess
如果儲存工作失敗,會擲回 Exception
。
相依性註冊
如果您想要插入服務,您必須先註冊服務。
使用下一個變更進行更新 MauiProgram.cs
:
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();
}
}
現在您可以插入服務,如下所示:
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);
}
}
範例
您可以在 .NET MAUI Community Toolkit 範例應用程式中找到作用中的範例FileSaver
。
API
您可以在 .NET MAUI Community Toolkit GitHub 存放庫上找到 的FileSaver
原始程式碼。