Документация по обработке файлов Xamarin - SpecialFolder.LocalApplicationData не существует - PullRequest
0 голосов
/ 11 октября 2018

Документация для Xamarin говорит, что вы можете прочитать текстовый файл, используя следующую строку:

File.ReadAllText(Path.Combine(Environment.GetFolderPath(Environment.SpecialFolder.LocalApplicationData), "score.txt"))

"score.txt" - текстовый файл в моем решении, однако, при компиляции ипри выполнении этого кода файл не может быть найден:

FileNotFoundException

Я могу успешно прочитать текстовый файл в моем решении с помощью этого:

using (var stream = await FileSystem.OpenAppPackageFileAsync("score.txt"))
using (var reader = new StreamReader(stream))

Однако я не могу использовать потоковое считывающее устройство, так как мне нужно прочитать файл при открытии приложения, чтобы оно не могло быть асинхронным.

Что я делаю неправильно или документация неверна?

1 Ответ

0 голосов
/ 11 октября 2018

File.ReadAllText (Path.Combine (Environment.GetFolderPath (Environment.SpecialFolder.LocalApplicationData), "score.txt"))

LocalApplicationData не является местоположениемродные в комплекте активы.Сначала необходимо скопировать его из пакета только для чтения.

Однако я не могу использовать потоковое считывающее устройство, поскольку мне нужно прочитать файл при открытии приложения, чтобы оно не могло быть асинхронным.

Вы можете сделать это в нескольких областях, изменив значение OnStart в подклассе приложения Forms (обычно App), чтобы разрешить await

protected async override void OnStart()
{
   ...

. Вы можететакже сделайте это на первой странице OnAppearing переопределение:

protected async override void OnAppearing()
{
   ...

Xamarin.Essentials OpenAppPackageFileAsync возвращает поток на "родной" ресурс Android Asset или комплекта iOS и т. д., поэтому вам нужно будет скопировать свойscore.txt файл в собственные проекты

Android:

Добавление / копирование score.txt в ваш проект Xamarin.Android Активы с действием сборки AndroidResource

enter image description here

iOS:

Добавьте / скопируйте score.txt в свои ресурсы проектов Xamarin.iOS (технически где угодно, но для организации ресурсы работают хорошо) сДействие построения BundleResource

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...