首页 > 解决方案 > FileNotFoundException - 无法使用 Room 实例导入 json

问题描述

我正在尝试使用原始文件夹中的简单 JSON 填充我的 ROOM 数据库,这是我的代码

fun getInstance(context: Context): CarDatabase {
    if(instance == null) {
        instance =  Room.databaseBuilder (
            context,
            CarDatabase::class.java, "cars_table"
        ).createFromAsset("app/res/raw/cars_sample.json").build()
    }
    return instance as CarDatabase
}

我明白了

引起:java.io.FileNotFoundException:app/res/raw/cars_sample.json

标签: androidjsonkotlinandroid-room

解决方案


除非您的模块具有src/main/assets/app/res/raw/cars_sample.json,否则这不是assets/JSON 中的有效路径。而且,由于 Android 找不到那个 JSON,我猜你的模块没有那个资产。

从您使用的外观来看,我的猜测是您正在尝试从原始资源填充数据库。原始资源类似于资产,但它们不是资产。

您将需要为您的模块创建一个assets/目录并将您的 JSON 移动到那里。


推荐阅读