我已经安装了 Community.Toolkit.Maui NuGet 包 并且我在使用 SaveAsync 方法时遇到问题。 当我 单击我页面的“保存文件”按钮,它会触发 onSaveFileClicked 方法 如下所示。 该方法调用 SaveAsync,它确实提示我输入 文件的名称和位置,并在该文件夹中创建文件, 但文件总是空的。
目前我只在 Windows 上运行它(即,不模拟 iOS或安卓)
这是我的主页(出于测试目的,我已硬编码 文件内容只是“Hello world”)
using CommunityToolkit.Maui.Storage;
using System.Collections;
using System.Diagnostics;
using System.Text;
namespace PrizesCalculator {
public partial class MainPage : ContentPage {
IFileSaver fileSaver;
CancellationTokenSource cancellationTokenSource = new CancellationTokenSource();
public MainPage(IFileSaver fileSaver) {
InitializeComponent();
this.fileSaver = fileSaver;
}
... other stuff here
private void OnSaveFileClicked(object sender, EventArgs e) {
using var stream = new MemoryStream(Encoding.Default.GetBytes("hello world"));
fileSaver.SaveAsync("PrizeDistribution.csv", stream, cancellationTokenSource.Token);
}
}
}
在 Stackoverflow 和其他网站上搜索但没有找到任何东西。
您可以尝试以下代码,它在我这边有效。
private async void OnSaveFileClicked(object sender, EventArgs e)
{
using var stream = new MemoryStream(Encoding.Default.GetBytes("hello world"));
//fileSaver.SaveAsync("PrizeDistribution.csv", stream, cancellationTokenSource.Token);
var fileSaverResult = await fileSaver.SaveAsync("PrizeDistribution.csv", stream, cancellationTokenSource.Token);
fileSaverResult.EnsureSuccess();
await Toast.Make($"File is saved: {fileSaverResult.FilePath}").Show(cancellationTokenSource.Token);
}