在 Xamarin 中,使用檔案存儲或打開某個特定檔案都是很常用的做法,而在跨平台中,每個平台都有自己的 IO 的坑。如何在 Xamarin.Froms 裡面讓使用者可以選擇打開哪個本文檔案,需要照顧多個不同的平台的檔案通路方式
在 Xamarin.Forms 右擊管理 NuGet 程式包,搜尋 Xamarin.Plugin.FilePicker 進行安裝,或在 csproj 上添加下面代碼
<PackageReference Include="Xamarin.Plugin.FilePicker" Version="2.1.36-beta" />
複制
如果不是讓使用者選取檔案内容,那麼在 Xamarin.Essentials 這個提供了 Xamarin 原生 API 互動的庫就完全足夠使用了
在界面上添加一個按鈕,用來讓使用者選取檔案内容
<StackLayout>
<Label x:Name="FileText" Margin="10,10,10,10"></Label>
<Button HorizontalOptions="Center" Text="選取檔案" Clicked="Button_OnClicked"></Button>
</StackLayout>
複制
在背景代碼添加按鈕點選時讓使用者選擇檔案的代碼
using Plugin.FilePicker;
private async void Button_OnClicked(object sender, EventArgs e)
{
var pickFile = await CrossFilePicker.Current.PickFile();
if (pickFile is null)
{
// 使用者拒絕選擇檔案
}
else
{
FileText.Text = $@"選取檔案路徑 :{pickFile.FilePath}";
}
}
複制
此時使用者可以不選擇檔案,如果使用者不選擇檔案,那麼将拿到一個空值

現在 CrossFilePicker 的 Open 和 Save 方法都過時了,請使用
Xamarin.Essentials.FileSystem
代替,或者用
Xamarin.Essentials.ShareFile
将檔案分享給其他應用打開
這個項目所有代碼放在 github 歡迎小夥伴通路