You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Studio中Kotlin如何将assets文件夹内容复制到内外存储

可行实现方案(Kotlin版)

针对Android平台操作assets目录的需求,以下是可直接运行的实现方案,ApplicationContext.assets本身是官方提供的合法API,调用失败通常是上下文状态、路径配置、操作方式错误导致的,可对照以下方案调整:

1. 读取assets下文本文件

fun readTextFromAssets(context: Context, fileName: String): String? {
    return try {
        // use方法自动关闭流,避免内存泄漏
        context.assets.open(fileName).use { inputStream ->
            inputStream.bufferedReader().use { reader ->
                reader.readText()
            }
        }
    } catch (e: IOException) {
        e.printStackTrace()
        return null
    }
}

// 调用示例:Activity内传入this,非页面类传入已初始化的applicationContext
val configContent = readTextFromAssets(applicationContext, "config.json")

2. 读取assets下二进制文件(图片、音视频等)

fun loadBitmapFromAssets(context: Context, imagePath: String): Bitmap? {
    return try {
        context.assets.open(imagePath).use { inputStream ->
            BitmapFactory.decodeStream(inputStream)
        }
    } catch (e: IOException) {
        e.printStackTrace()
        return null
    }
}

3. 遍历assets目录文件列表

fun listAssetsDir(context: Context, dirPath: String = ""): Array<String>? {
    return try {
        // 传入空字符串代表遍历assets根目录,传入子目录名遍历对应层级
        context.assets.list(dirPath)
    } catch (e: IOException) {
        e.printStackTrace()
        return null
    }
}

常见失败排查点

  • 确认assets目录放在src/main/路径下,和res目录同级,不要放错位置
  • assets下文件名区分大小写,代码中传入的文件名要和实际文件完全一致
  • assets目录是只读的,运行时无法直接修改其中的文件,如需修改要先把文件拷贝到应用内部存储再操作
  • 不要在Application的onCreate生命周期前调用assets操作,确保上下文已经初始化完成

内容的提问来源于stack exchange,提问作者Andrés Fernández

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.26 23:15:08