Текстовый файл Android не найден

В моем решении есть текстовый файл txtWords.txt, который я пытаюсь прочитать с помощью:

string path = Environment.GetFolderPath(Environment.SpecialFolder.Personal);

string filePath = Path.Combine(path, "txtWords.txt");

В моих экспериментах у меня есть один и тот же файл как в моем приложении C#, так и в папке App.Android> Assets (установлен в AndroidAsset). Я подумал, что на всякий случай положу его в оба места.

System.IO.FileNotFoundException: Could not find file "/data/user/0/com.WSC/files/txtWords.txt"

Я читал об использовании AssetManager, но это дает мне ошибку «пространство имен не может быть найдено».

Что я делаю не так и как лучше всего читать текстовый файл для приложения? Это должно быть очень просто, так что, полагаю, я делаю что-то довольно простое.

Вы пытаетесь сделать это из библиотеки PCL / NetStd (Xamarin.Forms) или библиотеки Xamarin.Android?

SushiHangover 28.09.2018 19:53

файл в вашем решении НЕ содержится в личных папках, он будет встроен в пакет приложений. Для Android лучший способ добиться желаемого - использовать актив.

Jason 28.09.2018 19:56

Есть ли хорошие примеры использования активов? Я пробовал, но не могу понять, как правильно использовать пространство имен Asset.

WSC 28.09.2018 20:46
Стоит ли изучать PHP в 2026-2027 годах?
Стоит ли изучать PHP в 2026-2027 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
1
3
282
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Используя Xamarin Essentials, вы можете читать связанный файл / файл, доступный только для чтения, через вашу библиотеку NetStd (Xamarin.Forms):

string wordsText;
using (var stream = await FileSystem.OpenAppPackageFileAsync("txtWords.txt"))
using (var reader = new StreamReader(stream))
{
    var wordsText = await reader.ReadToEndAsync();
}

re: https://docs.microsoft.com/en-us/xamarin/essentials/file-system-helpers?tabs=android

Nuget: https://www.nuget.org/packages/Xamarin.Essentials

Спасибо. Кажется, это ответ. Хотя, как ни странно, теперь я получаю ошибку «Оператор 'await' может использоваться только в асинхронном методе», даже если используется OpenAppPackFileAsync. Это отдельная проблема, которую нужно исследовать!

WSC 28.09.2018 20:45

Другие вопросы по теме