2016-04-08 56 views
0

Я провел пару часов, просматривая различные хиты в stackoverflow, которые являются результатом моего запроса заголовка.Как открыть и прочитать текстовый файл в каталоге my/assets?

Использование Android Studio.

У меня есть txt-файл в моей директории проектов src \ main \ assets, которую я хочу открыть и прочитать.

Все примеры, которые я нашел использовать AssetManager() или getAssets() кажется.

Я не могу воспользоваться ни тем, ни другим.

InputStreamReader isr = new InputStreamReader(AssetManager.AssetInputStream("xxx.csv"));

Производит ошибку: AssetManager() не является общедоступной в AssetManager; невозможно получить извне пакета

Что мне нужно сделать, чтобы получить доступ к файлу в папке с моими/ресурсами, чтобы открыть и прочитать его?

Редактировать проблема с обозначением этого как дубликата заключается в том, что я прочитал это другое сообщение по этому же вопросу, но у пользователя оригинального вопроса (то же самое у меня есть) никогда не отвечает !!! Ответ идет о том, как показывать пользователю, как читать файл. Но проблема была (такая же, как у меня): метод не признан. В моем случае (см. Комментарий ниже) я получаю Ошибка: не удается найти метод символов getAssets().

Может ли кто-нибудь помочь мне с этим? Все примеры показывают пример кода

AssetManager am = getAssets(); 

Но чего-то не хватает.

+2

http://stackoverflow.com/questions/9544737/read-file-from-assets –

+0

Как почти каждый вызов 'getAssets' предполагает, что вы вызываетесь изнутри действия. Просто используйте 'context.getAssets()' –

ответ

3

Что вы можете попробовать это использовать:

AssetManager am = getAssets(); 
InputStream is; 
is = am.open(pathToFile.txt); 

Затем используйте байт [] буфера (получить размер с помощью is.available();) и is.read (буфер) Не забудьте to is.close() после чтения.

Если вы не находитесь в Управлении, вам нужно использовать context.getAssets(), чтобы получить AssetManager.

Надеюсь, что вам поможет.

+0

В этом проблема. Я знаю, как открывать и читать файл, я просто не могу использовать AssetManager. Когда я помещаю в следующую строку: «AssetManager am = getAssets();» ошибка компиляции: «ошибка: не удается найти метод символов getAssets()». Я должен упустить что-то важное. – user2184214

+0

Решенный! Я пропустил часть, если не в классе Activity, то должен использовать контекст для getAssets(). – user2184214

+0

Ницца, рад, что вы это решили. Я отредактировал свой ответ для следующих людей, которым это нужно. –

Смежные вопросы