Как читать файлы активов с помощью VS & Monodroid - PullRequest
5 голосов
/ 03 марта 2012

Я пытался реализовать этот пример с использованием C # и Monodroid, но у меня возникают трудности при чтении и записи файла активов:

http://docs.xamarin.com/android/advanced_topics/using_android_assets

Я использую эмулятор, а не устройство.

Прежде всего, у меня проблемы с поиском пространства имен для активов. Открыто. То, что я в конечном счете нашел, было

const string lfn  = MyAssetFile.txt;
System.IO.StreamReader(Android.Content.Res.Resources.System.Assets.Open(lfn);

Это правильное пространство имен?

Во-вторых, мой файл активов помечен как AndroidAsset и «Копировать всегда» на панели «Свойства» VS, но мои попытки прочитать файл всегда терпят неудачу (файл не найден) с помощью этого оператора:

string  settings = "";
using (StreamReader sr = new System.IO.StreamReader (Android.Content.Res.Resources.System.Assets.Open(lfn))) settings   =   sr.ReadToEnd();

У меня неправильные настройки VS, так что файл ресурсов не копируется в эмулятор, или он копируется нормально, но мой код для открытия / чтения - это неправильно?

Ответы [ 2 ]

9 голосов
/ 03 марта 2012

Вы должны использовать:

const string lfn = "MyAssetFile.txt";
string settings = string.Empty;

// context could be ApplicationContext, Activity or
// any other object of type Context
using (var input = context.Assets.Open(lfn))
using (StreamReader sr = new System.IO.StreamReader(input))
{
    settings = sr.ReadToEnd();
}

Если я правильно помню, поскольку в данный момент у меня нет IDE, Android.Content.Res.Resources.System.Assets ссылается на Android активы, а не на ресурсы вашего проекта. Вы хотите использовать свои проекты, поэтому вам нужно использовать AssetManager из ваших Activities или Contexts.

Например: класс Activity имеет свойство с именем Assets. Это то, что вы используете. ИЛИ вы используете View Context.Assets свойство.

0 голосов
/ 28 октября 2012

Или просто добавьте сверху:

с использованием System.IO;

и это будет работать.

Команда Xamarin иногда забывает упомянуть using материал.

...