Есть ли способ открыть файл как объект 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 байта.
2 ответов:
Я не уверен, что существует какой-либо способ получить объект File из папки assets, но чтобы узнать длину файла в одной строке, вы можете использовать следующий код.
AssetFileDescriptor afd = context.getAssets().openFd(fileName); long size = afd.getLength();
Comments