#android #android-assets
#Android #android-активы
Вопрос:
Я хочу получить доступ к текстовому файлу, расположенному в разделе активы, из класса, который будет выполнять некоторую обработку этого файла и вызывается в моей деятельности. Код, который я использую, является:
AssetManager assetManager = getAssets();
InputStream instream = assetManager.open("file.txt");
это отлично работает, если используется в классе Activity, но как заставить его работать в простом классе Java?
Отредактировано
JamesBlack — потому что, если я передам inputstream, следующий код не будет работать
for (int i = 0; i < gestureNumbers.size(); i ) {
BufferedReader bf = new BufferedReader(new InputStreamReader(instream));
// possible error here
while ((line = bf.readLine()) != null) { ... }
}
Даже если gestureNumbers.size()> 1, цикл while выполняется только один раз, а затем он равен нулю, как только он прочитает файл один раз.
Когда следующий код работает, но я не могу открыть файл в обычном классе Java, он работает в классе activity, и я не хочу иметь слишком много кода в одном классе.
for (int i = 0; i < gestureNumbers.size(); i ) {
InputStream instream = assetManager.open("BSL_Word_POS.txt");
BufferedReader bf = new BufferedReader(new InputStreamReader(instream));
// possible error here
while ((line = bf.readLine()) != null) { ... }
}
Комментарии:
1. Почему бы не передать InputStream в обычный класс Java. Почему вы не хотите делать это в Activity?
2. если вы хотите сделать это в обычном классе Java, то передайте контекст класса activity в ваш класс java, а затем context.getAssets(); будет работать
Ответ №1:
Вы должны передать контекст этому классу Java для доступа к папке активов.
Комментарии:
1. Не могли бы вы привести пример, пожалуйста
2. NextClass nextview = новый NextClass(current_activity.this); общедоступный класс NextClass{ общедоступный NextClass(контекстный контекст){ AssetManager AssetManager = getAssets(); Входной поток instream = AssetManager.open(«file.txt «); }