Я хотел бы получить размер файла файла, расположенного в каталоге ресурсов. Я видел много примеров, таких как
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.db
04-13 12: 10: 03.432: ИНФОРМАЦИЯ (6259): Путь к файлу: /android_asset/db/call3.db
04-13 12: 10: 03.444: ИНФОРМАЦИЯ (6259): длина файла: 0
04-13 12: 10: 03.444: ИНФОРМАЦИЯ (6259): файл isFile: false
04-13 12: 10: 03.444: ИНФОРМАЦИЯ (6259): файл существует: false
конечно размер файла не 0, это 195 584 байта.