В моем решении есть текстовый файл 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, но это дает мне ошибку «пространство имен не может быть найдено».
Что я делаю не так и как лучше всего читать текстовый файл для приложения? Это должно быть очень просто, так что, полагаю, я делаю что-то довольно простое.
файл в вашем решении НЕ содержится в личных папках, он будет встроен в пакет приложений. Для Android лучший способ добиться желаемого - использовать актив.
Есть ли хорошие примеры использования активов? Я пробовал, но не могу понять, как правильно использовать пространство имен Asset.





Используя 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. Это отдельная проблема, которую нужно исследовать!
Вы пытаетесь сделать это из библиотеки PCL / NetStd (Xamarin.Forms) или библиотеки Xamarin.Android?