Есть ли способ открыть файл как объект File из папки assets android?



Я хотел бы получить размер файла, находящегося в каталоге assets. Я видел много примеров, таких как

 InputStream myInput = appContext.getAssets().open() 
Я знаю, что могу определить размер файла простым чтением InputStream в цикле, но я ищу способ сделать это через File object.Поэтому мне нужен путь к активам, и это то, что я не могу определить... Как пройти этот путь?
также пытался получить AssetFileDescriptor через appContext.getAssets().openFd() и openNonAssetFd(), но не повезло - получил FileNotFound или, вероятно, сжатые исключения.
кстати, эти методы openFd "довольно описано" на developer.android.com.
Я попробовал следующий код:
file = new File(new URI("file:///android_asset/db/call3.db"));
Log.i(APP_TAG, "File name: "+file.getName());
Log.i(APP_TAG, "File path: "+file.getPath());
Log.i(APP_TAG, "File length: "+file.length());
Log.i(APP_TAG, "File isFile: "+file.isFile());
Log.i(APP_TAG, "File exists: "+file.exists());

Который выводит в журнал:
04-13 12:10:03.413: информация(6259): имя файла: call3.дБ
04-13 12:10:03.432: INFO (6259): путь к файлу: /android_asset/db/call3.дБ
04-13 12:10:03.444: INFO (6259): длина файла: 0
04-13 12:10:03.444: INFO (6259): File isFile: false
04-13 12:10:03.444: INFO (6259): файл существует: false

Конечно размер файла не 0 это 195 584 байта.

197   2  

2 ответов:

Как получить этот путь?

Пути нет. То, что вы ищете, невозможно, извините.

Я не уверен, что существует какой-либо способ получить объект File из папки assets, но чтобы узнать длину файла в одной строке, вы можете использовать следующий код.

AssetFileDescriptor afd = context.getAssets().openFd(fileName);
long size = afd.getLength();
    Ничего не найдено.

Добавить ответ:
Отменить.