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
メソッドから返される結果。 これは、保存が成功したかどうかの確認と、ファイルが保存された場所の確認を行うために使用でき、さらに保存中に発生した可能性のある例外にアクセスするためにも使用できます。
Properties
プロパティ | タイプ | 説明 |
---|---|---|
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);
}
}
例
FileSaver
の動作の例は、「.NET MAUI Community Toolkit サンプル アプリケーション」で確認できます。
API
FileSaver
のソース コードは、.NET MAUI Community Toolkit の GitHub リポジトリにあります。
.NET MAUI Community Toolkit