Documentation for Xamarin说,您可以使用以下内容阅读文本文件:
File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "score.txt"))
“ score.txt”是我的解决方案中的文本文件,但是,在编译和执行该代码时,找不到该文件:
我可以使用以下方法在我的解决方案中成功读取文本文件:
using (var stream = await FileSystem.OpenAppPackageFileAsync("score.txt"))
using (var reader = new StreamReader(stream))
但是我无法使用流读取器,因为在应用打开时我需要读取文件,因此它不能是异步的。
我做错了什么或文档有错吗?
答案 0 :(得分:1)
File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData),“ score.txt”))
LocalApplicationData
不是本地捆绑资产的位置。您需要先将其从只读应用程序包中复制出来。
但是我无法使用流读取器,因为在应用打开时我需要读取文件,因此它不能是异步的。
您可以在多个区域中执行此操作,以将Forms的Application子类中的OnStart
替代(通常为App
)更改为允许await
protected async override void OnStart()
{
...
您也可以在首页OnAppearing
覆盖中执行此操作:
protected async override void OnAppearing()
{
...
Xamarin.Essentials OpenAppPackageFileAsync
将流返回“本地” Android资产或iOS捆绑资源等。因此,您需要将score.txt
文件复制到本地项目中
使用score.txt
的构建动作将AndroidResource
添加/复制到您的Xamarin.Android项目资产中。
将score.txt
添加/复制到您的Xamarin.iOS项目资源(技术上可以在任何地方使用,但是对于组织资源来说效果很好),构建操作为BundleResource