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

Как получить путь к папке активов Android в пакете приложений

У меня есть целая структура папок, которую я хочу скопировать из папки моих ресурсов. Тем не менее, mContext.getAssets(). Open() похоже, хочет только имя файла, чтобы он мог возвращать InputStream, который подходит только для копирования одного файла. Мне нужен файл, сделанный из папки в папке с моими ресурсами, чтобы я мог выполнять все файлы и папки и копировать их все.

Кто-нибудь знает, как получить путь к папке с ресурсами, чтобы я мог создать объект File?

Изменить: после некоторого изучения выяснилось, что вы не можете получить доступ к файлам в файлах/и raw/folders с абсолютными путями, чтобы иметь возможность создавать объект File. Вероятно, это связано с шифрованием пакета приложения. Надеюсь, кто-то может доказать, что я ошибаюсь, хотя!

Окончательное редактирование: я закончил создание массива строк для хранения дополнительных файлов активов:

   private static final String[] DEFAULT_ALBUM_FILES =
   {INTRO_TO_FLASHUM_DIR+"03 Never Can Say Goodbye.m4a",
    INTRO_TO_FLASHUM_DIR+"11 Bossa Baroque.m4a",
    INTRO_TO_FLASHUM_DIR+"intro fling.3gp"};

Затем я повторил это копирование каждого файла индивидуально, используя mContext.getAssets(). open(), чтобы получить InputStream. Я не думаю, что в настоящее время можно выполнить итерацию через папку в активах, используя обычные операции с файлами.

4b9b3361

Ответ 1

         AssetManager am = con.getAssets();//u have get assets path from this code

         InputStream inputStream = null;

         inputStream = am.open("file.xml");

или

  String file_name="ur.xml"

 inputStream = am.open("foldername/"+ur);

Ответ 2

Не могли бы вы переместить папку в папку /raw? Затем вы можете использовать:

 com.your.package:raw/yourFile

Вот так:

int resourceId = context.getResources().getIdentifier("com.your.package:raw/somefile.txt");
File f = new File(context.getResources().openRawResource(resourceId));

И вот кто-то делает это с папкой с ресурсами:

Активы Android с дополнительными папками

  InputStream is = getAssets().open("subfolder/somefile.txt");

Ответ 3

Используйте file:///android_asset для доступа к папке с ресурсами, а затем вы всегда можете указать свою подпапку.

AssetManager assetManager = null;   // null ???  Get the AssetManager here.
        AssetFileDescriptor assetFileDescriptor = null;
        try{
           assetFileDescriptor = assetManager.openFd("file:///android_asset/yourfolder/file");
                FileDescriptor fd = assetFileDescriptor.getFileDescriptor();
       } catch (Exception e){}