Подтвердить что ты не робот

Как передать путь к файлу в папке с ресурсами в файл (путь по строке)?

Возможный дубликат:
Android - Как определить Абсолютный путь для определенного файла из активов?

Я пытаюсь передать файл в класс File (String path). Есть ли способ найти абсолютный путь к файлу в папке с ресурсами и передать его в File(). Я пробовал file:///android_asset/myfoldername/myfilename как строку пути, но он не работал. Любая идея?

4b9b3361

Ответ 1

AFAIK, вы не можете создать File из файла активов, поскольку они хранятся в apk, это означает, что путь к папке с ресурсами отсутствует.

Но вы можете попытаться создать этот File с помощью буфера и AssetManager (он обеспечивает доступ к исходному ресурсу приложения файлы).

Попробуйте сделать что-то вроде:

AssetManager am = getAssets();
InputStream inputStream = am.open("myfoldername/myfilename");
File file = createFileFromInputStream(inputStream);

private File createFileFromInputStream(InputStream inputStream) {

   try{
      File f = new File(my_file_name);
      OutputStream outputStream = new FileOutputStream(f);
      byte buffer[] = new byte[1024];
      int length = 0;

      while((length=inputStream.read(buffer)) > 0) {
        outputStream.write(buffer,0,length);
      }

      outputStream.close();
      inputStream.close();

      return f;
   }catch (IOException e) {
         //Logging exception
   }

   return null;
}

Сообщите мне о ваших успехах.

Ответ 2

Если вы не распакуете их, активы остаются внутри apk. Соответственно, нет пути, который вы можете подавать в файл. Путь, который вы указали в своем вопросе, будет работать с/в WebView, но я думаю, что это особый случай для WebView.

Вам нужно распаковать файл или использовать его напрямую.

Если у вас есть контекст, вы можете использовать context.getAssets().open("myfoldername/myfilename");, чтобы открыть InputStream в файле. С InputStream вы можете использовать его напрямую или записать где-нибудь (после чего вы можете использовать его с файлом).