Android доступ к файлу активов

#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 «); }