#kotlin #assets
Вопрос:
Я создал несколько кодов, но все на Java… и я попытался использовать ApplicationContext.assets, но ничего
Есть какая-нибудь идея?
Спасибо и с уважением
Ответ №1:
Эта функция скопирует файл из папки «Ресурсы» и сохранит его во внешнем хранилище:
fun copyAssets(context: Context) { val assetManager: AssetManager = context.assets var files: Arraylt;Stringgt;? = null try { files = assetManager.list("") if (files != null) for (filename in files) { var `in`: InputStream? = null var out: OutputStream? = null try { `in` = assetManager.open(filename) val outFile = File(context.getExternalFilesDir(null), filename) out = FileOutputStream(outFile) copyFile(`in`, out) } catch (e: IOException) { Log.e("tag", "Failed to copy asset file: $filename", e) } finally { if (`in` != null) { try { `in`.close() } catch (e: IOException) { e.printStackTrace() } } if (out != null) { try { out.close() } catch (e: IOException) { e.printStackTrace() } } } } } catch (e: IOException) { Log.e("tag", "Failed to get asset file list.", e) } } @Throws(IOException::class) private fun copyFile(`in`: InputStream?, out: OutputStream) { val buffer = ByteArray(1024) var read: Int? = null while (`in`?.read(buffer).also({ read = it!! }) != -1) { read?.let { out.write(buffer, 0, it) } } }
Комментарии:
1. Спасибо, что это сработало. Как добавить папку в выходной файл? еще раз спасибо!
2. Хорошо, нужно только добавить папку здесь: val outFile = Файл(context.getExternalFilesDir(null), «/Новая папка/» имя файла)